Pull to refresh
1
0
Сергей @Dervish66

User

Send message

AccountLogic 2.0: доведенная до ума, но не до окончания

Reading time11 min
Views3K
Предысторию создания данного «продукта» можно проследить по постам на Хабре (последний, посвященный выпуску версии 1.0, находится здесь).

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

На сегодняшний день «ЭкаунтоЛогика» (новое обрусевшее название «Учетная Логика») позволяет – по крайней мере, должна позволять согласно спецификации – достаточно многое.

Возможности Учетной Логики
√ Создавать и редактировать учетные объекты в соответствии с их вещной природой.
√ Отслеживать не только их прошлые, но и будущие изменения (обязательства) с точностью до секунды.
√ Оценивать учетные объекты по произвольному числу измерителей.
√ Интегрировать в объекты и действия готовые справочники.
√ Согласованно передавать объекты между пользовательскими базами.
√ Автоматически выполнять повторяющиеся действия.
√ Отслеживать материальные связи между объектами.
√ Привязывать файлы к отдельным объектам, действиям или папкам.
√ Вести плановые, параллельные основным, базы данных.
√ Составлять иерархические отчеты (отчетные папки), в том числе с учетом курсовых разниц и сравнительно с плановыми данными.
√ Просматривать данные в табличном режиме и в режиме иконок.


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

Читать дальше →
Total votes 6: ↑4 and ↓2+2
Comments0

7 правил создания красивых интерфейсов

Reading time8 min
Views180K


Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

Вступление


Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
  • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
  • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

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

А пока давайте я расскажу, что вы найдёте в этой статье.

Читать дальше →
Total votes 86: ↑81 and ↓5+76
Comments34

Разработка модульных приложений на С/C++ с использованием аннотаций

Reading time12 min
Views19K
В моей первой статье я рассказал об использовании препроцессора для организации модульности на уровне исходных текстов в языках С/C++. Вкратце этот способ сводится к написанию специфических метаданных внутри исходников, которые анализируются внешним инструментом и используются для генерации glue-исходников, позволяющих реализовать модульность. Детали реализации описаны в упомянутой статье, поэтому не буду здесь повторяться. В данной статье я пойду чуть дальше и попытаюсь показать, что с помощью метаданных или аннотаций можно реализовать не только модульность, но и некоторые другие полезные фичи. Должно получиться что-то вроде Google Guice или Spring для С (той его части, которая связана с модульностью и аспектами). Отдельно подчеркиваю, что эта статья — дополнение и улучшение первой, поэтому тут я буду говорить не столько технических деталях реализации, сколько о том, как это все выглядит для пользователя. Если эта тема вызовет интерес, то я напишу продолжение с пояснениями о том, как устроено внутри само приложение-конфигуратор.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

Boost.DI: внедрение зависимости в С++

Reading time15 min
Views26K
«Не звони нам. Мы позвоним тебе сами.» — принцип Голливуда

Внедрение зависимости (Dependency Injection — DI) означает передачу (внедрение) одной или более зависимости какому-либо объекту (клиенту, компоненту) таким образом, что после внедрения эта зависимость становится частью состояния объекта. Это немного напоминает паттерн проектирования Стратегия, с той лишь разницей, что стратегия задаётся лишь однажды — в конструкторе. DI позволяет создавать более слабо-связанную архитектуру приложения, которая лучше поддаётся поддержке и тестированию.

Итак, ещё раз плюсы:
  • Уменьшает связность компонент (отделяет бизнес-логику от создания объекта)
  • Позволяет писать более поддерживаемый код (в одни и те же объекты мы легко можем внедрять разные зависимости)
  • Позволяет писать более тестируемый код (мы можем легче использовать стабы и моки)


Без внедрения зависимости С внедрением зависимости
class example {                         
public:  
    example()                           
        : logic_(new logic{})           
        , logger_(                      
            logger_factory::create()    
          )                             
    { }  
         
    int run() const;                    
         
private: 
    shared_ptr<ilogic> logic_;          
    shared_ptr<ilogger> logger_;        
};                             

 class example {
 public:
     example(shared_ptr<ilogic> logic
           , shared_ptr<ilogger> logger)
       : logic_(logic), logger_(logger)
     { }

     int run() const;

 private:
     shared_ptr<ilogic> logic_;
     shared_ptr<ilogger> logger_;
 };


Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments2

MMORPG без лишних деталей: Open Source

Reading time2 min
Views25K


Как говорится: «обещанного три года ждут». Примерно столько лет назад мы начали разработку своей «оригинальной» браузерки. О ней мы уже рассказывали: MMORPG без лишних деталей, как рассказывали и о наших скромных успехах год спустя.

При этом мельком упоминалось, что код игры постепенно открывается. И вот наконец настал тот момент, когда мы открыли его полностью: github.com/Tiendil/the-tale под BSD лицензией. А это значит, что вы вот прямо сейчас можете начать пилить свою собственную браузерку с… ну с чем захотите.

Разработчики игр, будущие владельцы браузерок и просто любопытствующие приглашаются под кат.
Читать дальше →
Total votes 30: ↑29 and ↓1+28
Comments25

Игра-подобие Pacman на STM32F429I-DISCO с редактором карт

Reading time4 min
Views9.7K
Видео для привлечения внимания



В двух словах о себе

Студент почти уже 4 курса факультета ПМ-ПУ Санкт-Петербургского государственного университета, с 1 курса потихоньку программирую на C/C++, около полугода назад стал поглядывать в сторону Java (огромное спасибо проекту JavaRush!). Регулярно цепляют новые темы для изучения: в рамках диплома занимаюсь обработкой изображений, также мучаю Qt, успел повозиться с машинным обучением, сделать проект на Ruby on Rails, а сейчас начинаю копаться в распознавании речи.

И вот однажды я понял, что мне хочется попробовать поработать с «железом». Долгие поиски в интернете и раздумья привели меня к тому, что я решился разбираться с ARM процессорами. Аргументами в пользу этого стало также и то, что в обозримом будущем, когда появятся свободные деньги, мне бы хотелось прицепить ко всему этому камеру и дисплей — мощность ARM вполне позволит мне это сделать.

Знакомство с железом

Мой выбор пал на семейство STM32. Подумав, что с парой светодиодов я быстро наиграюсь, а вот с экранчиком уже можно вдоволь поразвлекаться, я заказал себе STM32F429I-DISCO. Будучи ужасно разочарованным всеми питерскими магазинами, которые продают нужное мне железо, я все-таки получил заветную плату. Около недели разбирался с основами, радуясь каждому мигающему светодиоду или заработавшей функции.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments0
MasterPass ™ — это платформа, соединяющая интернет-банки и электронные кошельки с одной стороны, а также онлайн-магазины — с другой, и помогающая пользователям пропускать шаги по заполнению платежных и контактных данных при оплате.
Читать далее
Total votes 42: ↑31 and ↓11+20
Comments10

Ингредиенты IoT деликатесов быстрого приготовления: Intel Edison + Intel XDK + JavaScript + Grove Kit

Reading time16 min
Views17K
Насколько быстро можно создать устройство для Интернета вещей (IoT), которое управляется через браузер, получает и передает информацию, учитывая, что вы никогда не работали с микроконтроллерами, а только занимались высокоуровневым программированием на JavaScript?



Например, такое устройство как на фото. У него есть ЖК-экран и стрелочный указатель на сервоприводе. Рядом лежит телефон с запущенным браузером, который подключен к вебсерверу на устройстве. При нажатии стрелок в браузере, указатель поворачивается вправо, влево или устанавливается в нейтральное положение. После установки значения, оно передается обратно в браузер и показывается как значение Value. Дополнительно в браузере можно задать текстовую строку, которая после нажатия кнопки «Set text» выводится на ЖК-экране. Всё взаимодействие происходит по Wi-Fi. Как вы думаете, сколько времени уйдёт на разработку?
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments7

Learndroid, урок №7: LayoutInflater, UI контролы, AdapterView

Reading time1 min
Views8.9K
Уже больше трех месяцев идет бесплатная Android онлайн-школа Learndroid, которую организуют e-Legion и Google. За это время зарегистрировалось более 20 000 учеников, а сайт школы посетили более четверти миллиона человек. Подробнее о формате можно прочитать в предыдущем посте.

Сегодня мы выкладываем седьмой урок, который подготовил Даниил dev_troy Сердюков (CTO e-Legion).



В лекции рассказано, что такое LayoutInflater, рассмотрены параметры метода inflate() и то, как происходит процесс преобразования xml в UI компоненты. Рассмотрены основные UI контролы, механика работы с ними, паттерн Listener.
Total votes 11: ↑11 and ↓0+11
Comments0

Прелести интерфейса на частично перекрывающихся слоях

Reading time5 min
Views23K
Сегодня я расскажу как и зачем мы построили интерфейс нового сервиса Вирусдай на перекрывающихся слоях, как это сказалось на UX и как мы сформулировали принцип «Looks like an app. Works like an app».



За время, прошедшее с 2012 года мы несколько раз модернизировали как сам сервис, так и его интерфейс. Однако, всему однажды приходится сказать «прощай» и идти дальше. Настал момент, когда ни архитектура, ни интерфейс сервиса уже не отвечали нашим запросам. Нам предстояло превратить простой антивирус для сайтов в нечто большее – в целый набор связанных и удобных инструментов для лечения и защиты сайтов. Назревало только одно решение – делать новый сервис «с нуля». Архитектура, технологии, сценарии, интерфейсы – все должно было быть абсолютно новым. Нашей главной целью было достижение максимального уровня комфорта для пользователя при работе с новым сервисом.

Основной задачей нашего отдела стало создание максимально удобного и понятного UI. Итак, весной 2014 года мы приступили к работе над абсолютно новым интерфейсом сервиса и я расскажу вам как все происходило.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments21

Гибридная реализация алгоритма MST с использованием CPU и GPU

Reading time18 min
Views15K

Введение


Решение задачи поиска минимальных остовных деревьев ( MST — minimum spanning tree) является распространенной задачей в различных областях исследований: распознавание различных объектов, компьютерное зрение, анализ и построение сетей (например, телефонных, электрических, компьютерных, дорожных и т.д.), химия и биология и многие другие. Существует по крайней мере три известных алгоритма, решающих данную задачу: Борувки, Крускала и Прима. Обработка больших графов (занимающих несколько ГБ) является достаточно трудоемкой задачей для центрального процессора (CPU) и является востребованной в данное время. Все более широкое распространение получают графические ускорители (GPU), способные показывать намного большую производительность, чем CPU. Но задача MST, как и многие задачи по обработке графов, плохо ложатся на архитектуру GPU. В данной статье будет рассмотрена реализация данного алгоритма на GPU. Также будет показано, как можно использовать CPU для построения гибридной реализации данного алгоритма на общей памяти одного узла (состоящего из GPU и нескольких CPU).
Если интересно, то жми сюда
Total votes 20: ↑20 and ↓0+20
Comments14

Как я нашел лучший в мире язык программирования. Часть Йо (2.72)

Reading time21 min
Views116K
Поскольку после второй части у меня случился перерыв на работу, я поимел возможность получить некоторый фидбек, который я хоть и еще не обработал, все же заставляет меня написать внеплановую часть Йо, которая мне кажется важной для дальнейшего разговора. С тем же перерывом на работу связана задержка третьей части, прошу меня извинить тех, кто действительно ждал и пока не дождался.
Читать дальше →
Total votes 127: ↑88 and ↓39+49
Comments236

Создание нативных Android-приложений с использованием компилятора Intel C++ Compiler в Android Studio 1.0.1

Reading time6 min
Views60K
На момент написания этого текста текущей версией Android Studio была версия 1.0.1. Компилятор Intel C++ Compiler for Android, будучи частью Intel Integrated Native Developer Experience (Intel INDE), поддерживает Android Studio 1.0.1 в Intel INDE 2015 Update 1. Поскольку Android Studio 1.0.1 не поддерживает Android NDK, в этой статье описаны шаги для создания нативного Android-приложения с использованием Android NDK r10d и компилятора Intel C++ Compiler for Android. Поехали!

Android Studio в качестве системы сборки использует Gradle. На момент написания статьи Gradle в процессе сборки вызывала систему NDK. В Android NDK r10 и более поздней версии после инсталляции Intel INDE компилятор Intel C++ Compiler for Android (ICC) не является более используемым по умолчанию компилятором в системе сборки NDK.
Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments2

AI, Big Data и дезинформация технологий

Reading time3 min
Views29K


/ фото KamiPhuc CC

Обычно в нашем блоге мы рассказываем об облачных сервисах, хостинге и соответствующих технологиях. Сегодня мы поговорим о сложностях развития технологий в целом, искусственном интеллекте, больших данных и Майкле Джордане (не баскетболисте).
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments12

Стивен Вольфрам: Рубежи вычислительного мышления (отчёт с фестиваля SXSW)

Reading time28 min
Views27K

Перевод поста Стивена Вольфрама (Stephen Wolfram) "Frontiers of Computational Thinking: A SXSW Report".
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.


На прошлой неделе я выступал на SXSW Interactive 2015 в Остине, штат Техас. Вот несколько отредактированная стенограмма моего выступления:


Содержание


Наиболее продуктивный год
Язык Wolfram Language
Язык для реального мира
Философия Wolfram Language
Программы размером в один твит
Вычислительное мышление для детей
Ввод запросов на естественном языке
Масштабная идея: Символьное программирование
Язык для развёртывания
Автоматизация программирования
Масштабные программы
Интернет вещей
Машинное обучение
Исследования Вычисляемой Вселенной
Вычислять, подобно тому, как это делает мозг
Язык как символьное представление
Пост-лингвистические понятия
Древняя история
Чем будет заниматься искусственный интеллект?
Бессмертие и за его пределами
Коробка триллиона душ
Обратно в 2015 год
Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments27

Я тебя по сетям вычислю: используем API крупнейших соцсетей в своих корыстных целях

Reading time11 min
Views175K


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

Есть в американской разведке такая дисциплина, как OSINT (Open source intelligence), которая отвечает за поиск, сбор и выбор информации из общедоступных источников. К одному из крупнейших поставщиков общедоступной информации можно отнести социальные сети. Ведь практически у каждого из нас есть учетка (а у кого-то и не одна) в одной или нескольких соцсетях. Тут мы делимся своими новостями, личными фотографиями, вкусами (например, лайкая что-то или вступая в какую-либо группу), кругом своих знакомств. Причем делаем это по своей доброй воле и практически совершенно не задумываемся о возможных последствиях. На страницах журнала уже не раз рассматривали, как можно с помощью различных уловок вытаскивать из соцсетей интересные данные. Обычно для этого нужно было вручную совершить какие-то манипуляции. Но для успешной разведки логичнее воспользоваться специальными утилитами. Существует несколько open source утилит, позволяющих вытаскивать информацию о пользователях из соцсетей.
Читать дальше →
Total votes 89: ↑83 and ↓6+77
Comments22

Обнаружение сигнала в шумах

Reading time3 min
Views35K

По роду своей деятельности мне приходится осуществлять контроль различных параметров наземных импульсно-фазовых радионавигационных систем (ИФРНС) «Чайка» и Loran-C. В этой статье я хочу поделиться одним из методов обнаружения времени прихода импульса ИФРНС при наличии шумов. Метод применим во многих задачах поиска сигнала известной формы.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments9

Как интегрировать email и мессенджер для командной работы

Reading time2 min
Views11K
В большинстве инструментов для рабочего общения так или иначе присутствует поддержка электронной почты. Сложно найти сервис, в котором не будет email-оповещений о новых и непрочитанных сообщениях, разработчики некоторых подобных проектов идут еще дальше и внедряют возможность ответа на такие информационные письма (кое-кто даже с вложенными файлами — Fleep, Glip, Kato).



Однако до сих пор нет ни одного сервиса, который бы вернул эпоху Outlook и Blackberry (то есть примерно 2004 год). Тогда люди отправляли сотни коротких email-писем, которые похожи на нынешние сообщения в чате. Как правило адресатов таких посланий было мало — несколько самых близких коллег. Blackberry позволял людям оставаться на связи даже на ходу.

Возможно, в том, что эта эпоха ушла, нет ничего плохого, но ведь все еще остались люди, которые используют email как чат.
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments5

Разбор естественного языка: грамматическая нотация

Reading time6 min
Views16K


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

  • Морфологический — анализ словоформ и их характеристик (число, падеж, и т.д.);
  • Синтаксический — выделение структуры предложения (отношения между словами);
  • Семантический — выделение смысла исходя из «модели мира»;

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

Ситуация с синтаксическим разбором куда более сложная. Существующие анализаторы не могут претендовать на правильность и точность разбора в сложных случаях. Большая часть качественных продуктов выпущены под проприетарной лицензией (в большей мере это касается русского языка; с английским проблема, кажется, не стоит столь остро). Поэтому для прогресса в понимании машиной текстов, написанных на естественном языке, мы нуждаемся в качественных и доступных синтаксических анализаторах.

Из-за отсутствия у меня глубоких знаний в области нейронных сетей я решил следовать более проторенной тропой, а именно разработать BNF-подобную грамматическую нотацию и реализовать анализатор, использующий грамматические правила, описанные с её помощью. С этой точки зрения при разработке практически полезного анализатора основная работа заключается именно в построении достаточной системы правил (что у меня далеко до завершения). В следующем посте я опишу устройство реализованного анализатора, а пока хочу сфокусироваться на разработанной грамматической нотации.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments13

Быстрая нейронная сеть для каждого

Reading time3 min
Views224K
Данная статья продемонстрирует возможность легко написать свою нейронную сеть на языке Javа. Дабы не изобретать велосипед, возьмем уже хорошо проработанную библиотеку Fast Artificial Neural Network. Использование нейронных сетей в своих Java-проектах — реально. Часто можно услышать упреки в адрес Java касательно скорости выполнения. Хотя разница не так велика — подробно об этом можно узнать в публикации «Производительность C++ vs. Java vs. PHP vs. Python. Тест «в лоб»». Мы будем использовать обертку вокруг библиотеки FANN.
Читать дальше →
Total votes 35: ↑27 and ↓8+19
Comments12

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity