← Архив

Тег

Разработка

Записей: 118

Facebook запустил клон StackOverflow для Facebook разработчиков

Facebook объявил о запуске Форума для разработчиков, использующих инструменты Facebook. Community Forum создан с учётом интересов разработчиков для того, чтобы оные могли задавать и отвечать на вопросы, касающиеся разработки приложений в Facebook.

Читать дальше

Что нового в Node 12

Недавно вышла Node 12 с кодовым именем Erbium, долгосрочная поддержка которой (LTS) продлится с октября 2019 по апрель 2022.

В новой версии много вкусностей и улучшений рантайма. Помимо этого, учитывая, что под капотом V8, нода также получит все улучшения движка.

Читать дальше

Снежинка Коха в 3d на JS на Canvas

Пробую периодически различные библиотеки по надобности. Сейчас понадобилась небольшая либо, чтоб накидать в изометрии что-нить простенькое на canvas. Нашёл Isomer.js, решил что-нить практическое небольшое написать.

Читать дальше

Разработчики теперь могут использовать сетевое API Valve для своих игр в Steam

Последние несколько лет Valve работали над улучшением качества мультиплеера в Dota 2 и CS:GO при помощи ретрансляции трафика и его переноса на свою сетевую магистраль. Это позволяет защищать игры от DoS-атак, понижает пинг и повышает качество соединения. В SDK Steamworks версии 1.44 Valve выкатили новое API, предоставляющее доступ к этой службе всем партнёрам Steam.

Читать дальше

Коротко про Lerp

Линейная интерполяция (Linear interpolation, которую ещё называют 'lerp' или 'mix') - очень удобная функция при разработке игр, которая интерполирует в диапазоне [от..до] на основе параметра t, где t обычно находится в диапазоне [0..1].

Читать дальше

Будни бекендщика: bcrypt в Node.js не умеет в worker threads

В какой-то момент для некоторых тяжёлых операций вы начинаете задумываться о том, что в ноде не хватает возможности создавать дочерние потоки/процессы. И вот вы обновляетесь до последней версии Node.js, прикручиваете worker_threads, и...

Какие-то либы отваливаются. В частности, отваливается bcrypt, но только на Windows, на Ubuntu полёт нормальный.

Читать дальше

Будни юнитишника: сохраняйте глобальные ссылки на JNI объекты

Когда вы получили IntPtr на нативный Android объект, то GC может в какой-то момент почистить её (скорей всего, после выхода из локального скопа). Из-за того, что я одну ссылка не сохранил, дебажил код много часов, чтоб причину крашей найти.

Ещё хуже то, что стектрейс при краше никак не помогает.

Читать дальше

Android P: новые возможности для работы с текстом

Все мы знаем, насколько важен компонент TextView. Вероятно, из визуальных элементов он используется чаще всего. Вот почему Google неустанно улучшает этот компонент. В новой версии SDK нам приготовил много вкусностей.

Читать дальше

Unity-android-native: автоопределение типа при возврате объекта из JNI

Хорошо, когда вы знаете конкретный класс, который возвращает метод. Но что делать, если метод, к примеру getApplicationContext, возвращает абстрактный тип?

Пока что единственным вариантом вижу получения имени класса у полученного объекта, потом на основании этого имени нахожу соответствующий C# класс.

Читать дальше

Библиотека для работы с Android sdk из C# кода

Многим приходится работать с Java sdk из Unity3d либо используя самописные плагины, либо, если достаточно базовых возможностей sdk, с помощью юнитишных классов AndroidJavaClass и AndroidJavaObject.

Кто работал с этими классами знает, насколько ужасно выглядит код. Меня это тоже достало и решил для текущего проекта небольшую библиотеку сделать. Чуток причесал и залил на гитхаб. Постепенно буду расширять возможности библиотеки.

Читать дальше

Будни юнитишника: Steam, Mac, Metal - всё плохо

Сделали поддержку Mac'а, а про Steam overlay и забыли. Недавно игрок пожаловался, что не может в игре покупку сделать, не показывалось окно с инапами. Оказалось, что Steam overay не поддерживает Metal на данный момент.

Читать дальше

Будни юнитишника: WWW, всё равно его не брошу

WWW  is a wrapper around UnityWebRequest
WWW is a wrapper around UnityWebRequest

Вот многие ругают Java так как там ради обратной совместимости много старья тянется и т.п. Юнитишники, видимо, олдскульные джависты из начала 2000-х. Все мы знаем про ужасный класс WWW для загрузки всякого разного. Unity постоянно говорят, что его лучше не использовать больше, что лучше использовать UnityWebRequest, что его выпилят скоро, а воз и ныне там...

Читать дальше

Будни юнитишника: почему Raycast не работает, или проверяйте слои

raycast

Довольно долгое время была проблема в игре, что боты порой могли упереться в стенку и пытаться пройти сквозь неё. И так пробовал понять, в чём проблема, и сяк. Ну да, довольно быстро понял, что рейкасты не проходят, но почему?

Читать дальше

Полезные уроки, которые можно извлечь из 7 игр, родившихся на геймджемах

gamejam

Создание игры с нуля за 48 часов...что может быть утомительней, но в тоже время это прекрасный способ встряхнуть свой творческий потенциал. Вы можете создать что-то поистине новое, чего бы никогда не достигли в ходе обычного процесса разработки. Некоторые из этих не огранённых алмазов дошли до полноценного релиза (оригинальная статья 2015 года, на данный момент почти все игры поступили в продажу, – прим. переводчика). В статье будет рассмотрена парочка таких проектов.

Из каждой истории вы может извлечь что-то новое в плане маркетинга, дизайн и т.д.

Читать дальше

Unity3d: плагин для Android push notifications

Android-push

В Unity3d есть классы для работы с пушами под iOS. Но нет стандартных средств сделать тоже самое и под Android. Приходится писать свой плагин на Java, который затем можно закинуть в Plugins/Android и делать native вызовы к нему. Если вас интересует, как создать свой плагин (в частности, плагин для отправки локальных пушей), заходим под кат.

Читать дальше

Android: решение проблемы с крашами при проверке лицензии на 5.0

Представьте себе компанию, у которой есть какое-то SDK для абстрактного устройства. После обновления прошивки этих устройств до последней версии начинают крашится некоторые приложения. Эта компания знает о проблеме, но не обновляет sdk для исправления оной. Да, речь про Google. Уже не первый раз сталкиваюсь с такой проблемой, когда их сорсы допиливать приходится =/

Читать дальше

Android: новый экспериментальный инструмент Jack and Jill

Jack and Jill
Типичный процесс сборки с помощью Jack and Jill

Google работает над новым набором инструментов для разработки под Android, который позволит сократить время сборки проекта, а так же уменьшить зависимости между другими инструментами. Были представлены Jack (Java Android Compiler Kit) and Jill (Jack Intermediate Library Linker) - два новых инструмента.

Пока что можно пощупать лишь первую экспериментальную версию для тестирования ваших приложений. В посте кратко расскажу о том, как работать с этой новой тулзой.

Читать дальше

Android: улучшены возможности тестирования с помощью Google Play Games Management API

Google Play Games
Google Play Games

Совсем недавно Google порадовали нас тем, что улучшили механизм работы с sd-картами. Теперь же представили Management APIs для более удобного тестирования игрового центра, предоставляя полный контроль ресурсов Google Play Games в течении всего цикла разработки и тестирования с лучшей поддержкой альфа и бета групп.

Читать дальше

Android 5.0 Lollipop: изменён механизм работы с SD-картой

Lollipop: поддержка sd карты
Lollipop: поддержка sd карты

Google предоставил новый набор инструментов для разработчиков для более эффективного использования SD-карты на телефонах/планшетах с Android 5.0 Lollipop. Используя новый Intent, приложения могут получить доступ на чтение/запись на съемном носителе - даже не к собственным директориям. Google на конференции разработчиков этим летом объявила, что решат этот вопрос, и сегодня мы видим анонс в Google группе по Android:

Читать дальше

Android: Overscroll Listview

ResizableImageView

Возникла необходимость overscroll'а у ListView. Сделать так, чтобы работало на 2.3+, оказалось не так-то просто =/

Плюс решил ещё сделать фичу с замедлением, когда вы будто не скролите список, а именно тяните.

Компонент работает на Android устройствах с 2.3+

Читать дальше

Android NDK: работа с OpenSL ES

Ранее писал уже про OpenAL. В Кубике мы использовали именно OpenAL (игра была изначально написана под iOS). Дабы не переписывать весь код по работе со звуком, мы не стали переписать всё на OpenSL ES. В игре использовалось не так много звуков, поэтому проблем с ними не было. Некоторые, правда, жаловались на задержки при воспроизведении, но в целом всё было довольно неплохо. В Снежке же у нас использовалось много звуков (специфика игры обязывает), вот тут-то мы и столкнулись с большой проблемой. Было решено переписать всё на OpenSL ES. Для этого я написал парочку враперов, которыми решил и поделиться. Так же решил небольшой экскурс провести, так сказать Quick Start в OpenSL ES (:

Читать дальше

Android: доступ к скрытым директориям и SQLite базе в File Explorer в DDMS

Очень хочется именно в Eclipse просмотреть какие-то файлы на устройстве или содержание таблиц базы данных. Просматривать файлы на самом телефоне не вариант. Так как же отобразить скрытые (и системные) директории в File Explorer в DDMS?

Читать дальше

Android: ResizableImageView - растянуть изображение на всю ширину

ResizableImageView

Довольно часто возникает необходимость растянуть изображение на всю ширину с подгоном по высоте.

Если делать с помощью стандартных MATCH_PARENT или WRAP_CONTENT, то ничего путного не выйдет. Что же делать?

Читать дальше

Android: прикрепить MediaController к VideoView, чтобы не слетало позиционирование

Предпочтительный метод для задания положения MediaController - использовать метод setAnchorView. Вот только VideoView после загрузки всё сбивает, и MediaController может появится не там, где нам хочется.

Читать дальше

Android: FlowLayout с автоматическим переносом элементов

Swen Vincke

Порой необходимо создавать элементы динамически, или же размер элементов может сильно варьироваться. Как же тогда организовать перенос элементов на другую строку? Ни LinearLayout, ни RelativeLayout этого не позволяют.

Читать дальше

Android In-app purchasing: платное отключение рекламы в своём приложении

Много раз уже просили написать статью о том, как в приложении реализовать платное отключение рекламы. Вообще, реализовать рекламу легко, по In-app так же есть куча информации в официальной документации. Ну, если кому-то всё же статья пригодится, то хорошо.

Читать дальше

Android: использование кастомных шрифтов и возможные проблемы с утечками памяти

Довольно часто есть необходимость в кастомизации стандартных элементов. Как пример, хотите использовать шрифты отличные от стандартных. О возможных проблемах при работе с шрифтами под Android и хочу рассказать.

Читать дальше

Переезд в Москву, собеседования и поиск работы

Давно уже планировал переехать. Вот только подумал, что нужно хоть какой-нибудь опыт работы получить, чтобы без проблем потом устроиться. Как оказалось, опыт не особо то и нужен был.

Кратко расскажу о том, как всё это происходило. Может кому-то пригодится информацию, и он тоже решится на переезд, чтоб не прозябать в своём родном городе.

Читать дальше

Android NDK: использование libjpeg для создания текстур

Понадобилось при порте генерить текстурку из jpeg файла. Решил поделиться самой либой, чтоб без проблем смогли её сбилдить в своём проекте, а так же небольшим примерчиком того, как считать пикчу из assets.

Читать дальше

Basic Authentication в HttpClient, HttpPost, HttpGet в Java

Понадобилось для одной задачи получать данные из сервиса в сети. Но там была необходима аутентификация. Пару часов провозился пытаясь с хэдерами разобраться. Оказалось всё как обычно: есть уже готовые механизмы для этого.

Читать дальше

Android: послать GET/POST запрос с помощью AsyncTask

Чтобы в приложении выполнять тяжелые задачи можно вводить отдельный поток и использовать Handler для обратной связи и обновления экрана. Для решения подобных задач сделали отдельный класс – AsyncTask. Т.е. его цель – это выполнение тяжелых задач и передача в UI-поток результатов работы. При этом нам не надо задумываться о создании Handler и нового потока. Для отправки запросов вроде как тоже рекомендуется использовать AsyncTask.

Читать дальше

Android NDK: работа с OpenAL и постепенная подгрузка WAV

В прошлой статье показал, как можно работать с WAV и Ogg форматами в ndk с помощью OpenaAL. Вот только в той реализации файлы целиком в память грузились. Кое-что дописал для работы с WAV, теперь файл можно грузить кусками по мере необходимости.

Читать дальше

Основы Android NDK: работа с OpenAL и форматами WAV, OGG

Для порта игры пришлось работать с OpenAL. Можно конечно было выкинуть весь C++ код и переписать всю работу со звуков на Java, но это не интересно. Решил поделиться опытом и показать как на Android работать с OpenAL и форматами WAV, OGG.

Читать дальше

Основы Android NDK: работа с C/C++ кодом

Android NDK path

Использование нативного кода, написанного на C или С++ — это тема, которую многие разработчики не затрагивают вовсе. Но порой использование C++ в приложениях намного упрощает/ускоряет разработку. В этой статье будут рассмотрены основные принципы работы с native кодом.

Читать дальше

libGDX: Часть 8. Создание меню и переход между экранами

Меню игры

В любой игре присутствует меню. Довольно сложно придумать иной способ навигации. В этой статье рассмотрим как создать свой экран с меню средствами libGDX. Попутно немного о проблеме соотношения сторон на различных устройствах.

Читать дальше

libGDX: Часть 7.1. Использование AdMob

AdMob в своей игре

Ради интереса решил посмотреть сколько в принципе можно заработать на рекламе в не очень раскрученном приложении. Как раз дописывал Lode Runner'а, в него и запихнул. Решил показать, как добавить в свои игры на LibGDX рекламу.

Читать дальше

libGDX: Часть 6.2. Использование фильтров в Box2D

Box2D Filter

В прошлой статье рассматривалась работа с ContactListener. Вот только примеры, которые я использовал, были не совсем верно выбраны. В Box2D есть намного более удобные средства для фильтрации столкновений, а именно - фильтры. О них и напишу в этот раз.

Читать дальше

libGDX: Часть 6. Работа с Box2D

Box2D Test

Прошлые статьи в целом были вводными. Но только при помощи них уже можно написать свою игру. Правда в этом случае придётся всю физику самому продумывать. Для написания многих типов игр идеально бы подошёл встроенный в LibGDX движок - Box2D. О нём и пойдёт речь в этой статье.

Читать дальше

libGDX: Sprite и поворот

Попросили для Bomberman'a сделать возможность управлять стрелками, а не джоем. При чём, хотели возможность самим задавать положение всех 4-х стрелок. Вместо того, что бы рисовать все 4, тем самым забивая лишними битами атлас, решил всего одну стрелку сделать, а потом просто поворачивать. Довольно забавно ведут себя методы по повороту спрайта.

Читать дальше

libGDX: Часть 2.1. Архитектура игры на основе scene2d

Та архитектура, что я привёл довольно хороша, но избыточна. Зачем изобретать велосипед? В действительности в libGDX есть пакет scene2d, который позволяет на его основе создать хорошую архитектуру.

Читать дальше

libGDX: Часть 4. Спрайты, Текстуры, Регионы, Атлас

Часть 3. Пример.

При написании игры больше всего времени тратится именно на работу с графикой. В этой статье рассмотрим как работать с графикой (текстурами, регионами и т.д.) в libGDX. Помимо описания принципов основных дам пару советов об оптимизации рендеринга.

Читать дальше

libGDX: Часть 3. Обзор модулей

libGDX - Диаграмма модулей

Статья, по сути, являтся переводом официальной документации. Может что-то будет отличаться. libGDX включает в себя несколько модулей, предоставляющих определённые возможности при разработке. Думаю, очевидно, какие модули должны присутствовать в такого рода библиотеке.

Читать дальше

libGDX: Часть 2. Архитектура игры

После рассмотрения жизненного цикла игры сразу стоит рассмотреть архитектуру (каркас). Вообще Роллингс и Моррис (Rollings and Dave Morris) в своей книге "Game Architecture and Design" подробно описывают создание игр с точки зрения архитектуры. В своё время я правда не особо проникся этой книгой, но вам может понравится. Я же опишу архитектуру, которую стараюсь использовать сам.

Читать дальше

libGDX: Часть 1. Жизненный цикл игры

В прошлой статье создали простенькое приложение для проверки работоспособности. Теперь стоит узнать о жизненном цикле игр. Впрочем, это относится не только к играм, любое приложение в Android имеет такой жизненный цикл.

Читать дальше

libGDX: Введение

Начиная с libGDX работать, уже тогда подумал над написанием туторила по этой библиотеке. Когда начал освещать процесс написания игры, то вопросы посыпались на мыло и в твиттер по некоторым аспектам разработки. Так что, начнём. Список всех статей (да и какие-нибудь другие материалы) буду размещать на странице о libGDX. В новом уроке будет использоваться исходник предыдущего и что-то дописываться.

Читать дальше

Bomberman v1.2: добавлена анимация взрыва

Bomberman

Реализовал анимацию взрыва. Оказалось всё довольно-таки не просто. Обойтись одним объектом не получалось никак. Да и ещё сложность была в том, что анимация взрыва по краям и в центре разная. Но, обо всё по порядку.

Читать дальше

Bomberman v1.1

Доработал слегка управление, слегка анимацию оптимизировал. Контролы будут снизу справа (установка бомбы, взрыв и т.д). Для управления пока тачем. Если нажали левее перса, то идёт влево, если выше, то вверх и т.д. Если есть клава, то двигаться можно стрелками, а бомбу устанавливать пробелом.

Читать дальше

libgdx: переключение между экранами

В любой игре есть меню, из которого вы уже попадаете на игровой экран. В общем-то различных экранов может быть много. Можно, конечно, полностью перерисовывать всё, когда необходимо переключение между экранами. В libgdx всё намного проще оказалось.

Читать дальше

Android: использование Audio в libgdx

Озвучку движения игрока сделал. Слегка пришлось повозиться, правда (: Обычно я эмулятор использовал только для игр, но они, как выяснилось, позволяют дебажить игры и вытаскивать из них ресурсы =D

Читать дальше

Взлом Defender 2: изменение значений золота и кристаллов

Defender 2 - взлом

Вчера написал о том, как первую часть ломануть, теперь расскажу, как и в Defender 2 выставить произвольное значение золота и кристаллов.

Как и для взлома Defender, вам понадобится рут доступ (Android rooting) для доступа к файлам сохранений игры.

Читать дальше

Android: Release Version и "Waiting for Debugger"

Когда дебажил под своим HTC или на эмульке, то сообщение "Waiting for Debugger" как бы очевидным было. Но вот когда приложение в .apk запилил, то при установке приложения и запуске это же сообщение появлялось, хотя и не должно (:

Читать дальше

FeedBurner API: получить число подписчиков

FeedBurner API

Давно уже сам юзаю. Но порой ошибка при получение данных была, но на следующий день опять норм. Там у гугли на форумах многие про эту ошибку спрашивали. Решил гайдик накатать.

Читать дальше

Android: Кастомизация TextWatcher для обработки ввода в EditText

Для работы с элементов EditText когда-нибудь вам придётся организовывать слежение за вводов пользователя. Есть стандартный OnKeyListener, но он как-то странно работает 0_о. Но обо всём попорядку.

Читать дальше

Android: использование SharedPreferences для сохранения настроек

Для большинства приложений требуется сохранить настройки, управляющие поведением программы. Android предоставляет несколько альтернативных способов сохранения данных приложения, каждый из которых
оптимизирован для определенных нужд.

Общие настройки — простой и легкий механизм, основанный на парах «ключ — значение» и предназначенный для сохранения примитивных данных приложения, чаще всего пользовательских настроек.

Читать дальше

Android: создание ресурсов для разных языковых настроек

Создание ресурсов для разных языковых настроек и аппаратных конфигураций

Неважно, для какой системы ведётся разработка, такие ресурсы, как строковые константы и изображения, всегда лучше держать за пределами исходного кода. Android позволяет подобные вещи во внешних файлах хранить. Думаю, не стоит говорить, что это очень удобно, как для обновления, так и для контроля.

Это позволяет описывать уникальные значения для конкретных языков, аппаратуры и т.д. При запуске приложения Android автоматом всё делает. Картинки и подобные ресурсы не очень интересно рассматривать тут, а вот про языке стоит написать.

Читать дальше

Получение параметров из ExtendedProperties задания на форме редактирования в рамках рабочего процесса SharePoint

В SharePoint, работая с рабочими процессами, в любом случае придётся использовать какие-то свои параметры/атрибуты для заданий. Вот только, если в самом р.п. нет проблем при получении оных, то на форме редактирования рабочего процесса возникают трудности.

Читать дальше

Facebook требует подтверждения после нажатия "Like"

Facebook Confirm

Был у нас сайт, все кнопки социальных сетей работали. Внезапно перестала работать кнопка от FB. При нажатии на Like - popup окно появляется и быстро исчезает, текст кнопки становится "Подтвердите".

Читать дальше

Узнать имя и путь к элементу, к которому прикреплён рабочий процесс

В SharePoint проблемно как-то узнать путь к элементу, на котором запустили рабочий процесс. Если рабочий процесс запущен в библиотеке на документе, то проблем нет, если же к элементу списка, то уже проблема.

Читать дальше

HTML5: Audio sprite

Если используется аудио на странице, то почему бы слегка не оптимизировать процесс - использовать спрайты. Вроде того, как используются спрайты в css: одна картинка, а затем отображать из неё куски. По аналогии можно и для аудио сделать. Скажем, в фоне загрузить одну дорожку, а уже потом проигрывать определённые её сегменты.

Читать дальше

HTML5: Audio

html5 audio

До выхода HTML5 встроить звук в веб-страницу было сложновато. Я лично Flash юзал для этого, так как Flash позволяет вам встраивать любую анимацию или звук в страницу. В целом было неплохое решение. Вот только в силу дальнейшего распространения Apple продукции (кто не в курсе: на iPhone и iPad нет поддержки Flash) флеш уже не так котировался. В HTML5 для этого элемент <audio> появился.

Читать дальше

Закрытие модального окна в ASP

Как в ASP закрыть модальное окно при необходимости? Использовать JS :D

В SP, если открывать задание из библиотеки, то оно открывается в модальном окне. Хотелось бы при нажатии кнопок управления формы, закрывать окно, если оно модально.

Читать дальше

Помощники вида в Zend Framework

Zend Framework основан на MVC (Model-View-Controller), где вид может получать доступ к модели, ну и выполнять некоторую логику отображения. Да даже не обязательно работа с моделью. Работа с датой, формой или что-то подобное очень удачно решается с использование помощников вида. Конечно, можно прям в файле вида всё это делать, но это загрязняет код, очевидно же.

Помимо того, что мы делает код читабельным, выделение подобных функций в помощник вида позволяет многократно использовать его. Как я уже сказал, та же работа с датой, много где используется. Выделив в отдельный класс работу с датой, можно будет многократно использовать этот код.

Читать дальше

Семантическая разметка в HTML5

Семантическая разметка
Семантическая разметка

Как известно в HTML5 появились новые элементы для секционирования документа. Использование этой разметки не предоставляет никаких мгновенных преимуществ. Главным плюсом такой разметки является то, что она помогает ботам поисковиков лучше контент сайта понимать.

Кто верстал в HTML4, что-то подобное на уровне DIV'ов делал. Сейчас же можно новые элементы использовать. Плюс в том, что старый код, в случае необходимости, не много претерпит изменений, так как интеграция с css полная у спецификации.

Читать дальше

Включение трассировки загрузки сборки C#

Установив на сервак новые компоненты для Visual Studio, при запуске проекта, вылезла ошибка «Невозможно загрузить файл или сборку "***" или один из зависимых от них компонентов. Не удается найти указанный файл.» Вроде всё было подключено. Попробовал кинуть dll в папку с проектом, не помогло.

Раньше в этим компонентом работал при разработке Web-форм ASP приложения. Тут же, при работе с Веб-партами в рабочем процессе, эта ошибка, хотя всё по аналогии вроде как. Из лога ошибки ничего не понятно. Понадобилось включить трассировку загрузки сборки.

Читать дальше

HTML5: Web Workers

html5 Web Worker
html5 Web Worker

Технология HTML5 Web Workers предоставляет веб-приложениям возможности фоновой обработки в виде отдельных потоков, что позволяет JavaScript-приложениям в полной мере использовать преимущества многоядерных процессоров. Кроме того, использование потоков позволяет избежать назойливых предупреждений о долгом выполнении скрипта, которые появляются если скрипт выполняется дольше нескольких секунд.

Читать дальше

HTML 5 Canvas: кривая дракона

Кривая дракона
Кривая дракона

Кривая дракона — общее название для некоторых кривых фрактальных , которые могут быть аппроксимированы рекурсивными методами, такими как L-системы. Дракон Хартера, также известный как дракон Хартера — Хейтуэя, был впервые исследован физиками NASA — John Heighway, Bruce Banks, и William Harter. Он был описан в 1967 году Мартином Гарднером (Martin Gardner).

Естественно, рисовать буду на Canvas :3

Читать дальше

Обход препятствий: волновой алгоритм (Алгоритм Ли) 8 клеточный

Волновой алгоритм 8 клеточный (Алгоритм Ли)
Волновой алгоритм 8 клеточный (Алгоритм Ли)

В прошлой статье описывал как обходить препятствия, используя волновой алгоритм (Алгоритм Ли). Но там лишь 4 клеточная реализация была. Теперь же сделал, проверяя все 8 клеток, ну и оптимизировал немного.

Читать дальше

Обход препятствий: волновой алгоритм (Алгоритм Ли)

Волновой алгоритм (Алгоритм Ли)
Волновой алгоритм (Алгоритм Ли)

Тема нахождения пути на карте волнует многих программистов (в основном занимающихся разработкой игр). Заинтересовался этими алгоритмами. Решил для начала самый простой рассмотреть - волновой алгоритм (алгоритм Ли) .

Читать дальше

Снежинка Коха на JS с использованием Canvas

Кривая Коха — фрактальная кривая, описанная в 1904 году шведским математиком Хельге фон Кохом. Три копии кривой Коха, построенные (остриями наружу) на сторонах правильного треугольника, образуют замкнутую кривую, называемую снежинкой Коха.

У меня порой бывают заскоки, когда хочется какую-то мат. задачку запрограммировать. На этот раз решил с фракталами повозиться. А именно со снежинкой Коха.

Читать дальше

Отправка уведомлений в рамках задания рабочего процесса SharePoint

Очевидно, для нормальной работы с заданиями необходимо предусмотреть возможность рассылки уведомлений об изменениях статуса заданий. Как пример, отсылать письмо при создании задания, редактировании, удалении и т.д.

Меня интересовала больше отправка уведомления о назначении задания пользователю. При настройке параметров задания можно установить свойство endEmailNotification в true и задать тело письма в EmailBody. Тогда при назначении задания письмо будет отправлено пользователю. Но есть тут ограничение - нельзя узнать ID (именно ID, а не GuID) этого заданий в рамках библиотеки. Но вы должны были заметить, что прямая ссылка на задание имеет вид http://сайт/_Layouts/listform.aspx?PageType=4&ListId={ID_Библиотеки}&ID=ID_задания, где ID - уникальный идентификатор в рамках этой библиотеки. Так что, учитывая, что рантайм мы не может получить этот ID для отправки письма стандартными средствами, то таким образом невозможно в письмо приложить ссылку прямую на задание.

Читать дальше

Создание своего типа контента для SharePoint

В Microsoft SharePoint Foundation 2010 тип контента представляет собой повторно используемую коллекцию параметров, которые можно применить к определенной категории контента. Типы контента обеспечивают централизованное управление метаданными и поведением типов документов, элементов и папок с возможностью повторного использования параметров.

Меня интересовал этот вопрос в рамках Activity CreateTaskWithContentType, который позволят использовать конкретный тип контента. Подробнее про тип контента можно на msdn почитать, здесь же чисто практическую часть хочу рассмотреть.

Читать дальше

Прикрепить файл в рабочем процессе в своей форме

Появилась необходимость возможности прикрепить файл на форме работы с заданием в рамках рабочего процесса. Как создать свою форму для задания в рамках рабочего процесса я уже рассматривал. В данной статье решил показать как добавить возможность прикреплять файлы при выполнении задания.

Читать дальше

Добавление кнопок в визуальный редактор WordPress

Я уже в статье рассматривал как добавить кнопки в редактор WordPress. Многие спрашивают, как сделать так, чтобы кнопки нормально отображались и в визуальном редакторе.

Вообще, WordPress показывает в визуальном редакторе не все кнопки. Понятно, возможно не хотели интерфейс перегружать. Если у вас есть необходимость в них, то можно вынести на панель.

Читать дальше

Create the Workflow Task Edit Form

При разработке собственных рабочих процессов, вам придётся самим программно создавать задания. При использовании Activity CreateTaskWithContentType, указывая тип контента, можно использовать свои формы инициации, ассоциации и редактирования для задания. В данной статье решил показать как создать форму для редактирования задания.

Читать дальше

Авторизация пользователей в IPB 3.1.x из своих скриптов

Довольно частое явление, когда вы используете форум ipb, а движок сайта пишете сами. Естественно вы не хотите хранить инфу о юзерах в двух местах: для авторизации на сайте и форуме. Очевидно, лучше использовать внешнюю авторизацию для форума при авторизации на сайте.

Читать дальше

Создание своего Activity для WorkFlow

Возникла необходимость написания рабочего процесса утверждения/согласования документа в силу того, что стандартное не подходит (да и то, что в SharePoint Designer тоже не подошло). Работа, в сущности, происходит с Activity CreateTask и другими Activity, который связаны с ним: onTaskCreated, onTaskChanged и прочие. Сама работа с элементами в целом не сложна, если знать тонкости, конечно. Решил все эти события и Activity связанные с заданием запихнуть в один класс. Покажу как это выглядит примерно.

Читать дальше

Добавление Activity в WorkFlow во время выполнения

При разработке рабочих процессов в Visual Studio используют элементы из Тулбокса, просто перетаскивая. Но в таком случае WorkFlow статичен. Возникла необходимость добавления в рабочий процесс новых элементов на стадии выполнения. Наткнулся на подводные камни.

Читать дальше

PeopleEditor Control

PeopleEditor Control
PeopleEditor Control

При разработке форм собственных в Visual Studio для Share Point этот контрол очень помог. Позволяет выбирать из списка юзеров сервера необходимых нам. Нет необходимости самому писать модальные окна, мучаться с колбэками.

Читать дальше

Отладка решений SharePoint

Столкнулся с тем, что нужно разрабатывать рабочие процессы для SharePoint в VisualStudio. Отладка выполняется с помощью отладчика Visual Studio. При запуске отладки Visual Studio развертывает файлы проекта на сервере SharePoint, затем открывает экземпляр сайта SharePoint в веб-браузере. Вроде просто, но долго не мог понять, почему отладка не работает.

Читать дальше

Добавление кнопок в редактор WordPress

Дополнительные кнопки в редактор WordPress
Дополнительные кнопки в редактор WordPress

Многие, уверен, сталкивались с проблемой, когда вам не хватает возможностей стандартного редактора WordPress. Порой не хватает некоторых кнопок, которые могли бы автоматизировать процесс написания и корректировки поста перед публикацией.

В сети решил поискать информацию по добавлению кнопок в редактор WordPress. Есть решения, но они неполноценны по многим критериям. Поэтому решил свой вариант предложить.

Читать дальше

htaccess не работает

Каждый раз ставя Apache, сталкиваюсь с одними и теми же проблемами. Часто бывает, что после всех настроек не работает .htaccess. Погуглив слегка, заметил, что у многих такая проблема. Поэтому решил (по большей части для себя) мануальчик написать, чтоб впредь сразу ответ найти, если понадобиться.

Читать дальше

Cортировка массива методом Хоара(«Быстрая» сортировка) - сравнение параллельной и последовательной реализации

Сортировка массива методом Хоара(«Быстрая» сортировка)

Как и для большинства алгоритмов сортировки, методика «быстрой» сортировки взята из повседневного опыта. Чтобы отсортировать большую стопку алфавитных карточек по именам, можно разбить ее на две меньшие стопки относительно какой-нибудь буквы, например K. Все имена, меньшие или равные K, идут в одну стопку, а остальные – в другую.

Данный алгоритм очень удачно подходит для распараллеливания. Меня заинтересовало, какой прирост к производительности будет, если использовать потоки.

Читать дальше