— Привет и добро пожаловать!
Меня зовут Денис Крешихин и это мой блог :)
Немного обо мне можно прочитать здесь

Адаптер интерфейса в Go

Пару лет назад в статье Язык Go: реабилитация императивного программирования я поднимал тему проектирования в Go. Хотя Go не является полноценным объектно-ориентированным языком, тем не менее, обеспечивает достаточные возможности для реализации классических паттернов проектирования.

Вместе с тем в Go нет общепринятого подхода для написания обобщенных алгоритмов, типа темплейтов на которых строится STL в C++. Видимо, поэтому алгоритмические возможности стандартной библиотеки Go довольно ограничены. Для того что бы к коллекции применить какой-то алгоритм обычно требуется определять некоторый интерфейс, например, как это происходит при использовании сортировки sort.Sort из стандартной библиотеки. На примере этого интерфейса sort.Interface можно создать структуру-адаптер которая позволит применять функцию без явного определения новых методов.

Загрузка видео в Twitter на Go

Уже почти год на Twitter можно заливать короткие видеоролики, более того возможность загрузки видео доступна из официального API. Конечно, Twitter и раньше позволял отображать ролики из видеохостингов как Youtube и Vimeo, но нужно иметь ввиду, что в отличии от встроенных медиа эти ролики не воспроизводятся автоматически при прокрутке, что привлекает пользователь в меньшей степени.

В этой заметке я опишу как загружать видео прямиком на Twitter.

Обмениваемся кодом в соц. сетях сохраняя форматирование

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

Анонс

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

Из запланированных пару дней ушло пару недель с лишком. Подробнее с библиотекой можно ознакомится в статье О том, как рисовать кривые графики в стиле XKCD.

Добавление утилиты командной строки в npm-пакет

Недавно появилась необходимость добавить в npm-пакет комманду, которую можно было бы запускать прямо из оболочки. Оказывается под Node.js это делает довольно просто.

jsnpm3-го октября 2015комментировать

Мои впечатления от Swift

На Swift я более-менее активно программирую уже полгода, даже успел сделать собственный проект — тюнер для точной настройки струнных инструментов SciTuner. Плюс сделал несколько приложений на заказ. Впечатления от языка в основном положительные — синтаксис гораздо приятней для глаз, нежели при программировании на Objective-C, самом C или C++. Тем не менее постараюсь сохранить объективность в этой заметке.

Рендер математических "картинок" на Go

Со времён ZX Spectrum'а обожаю рисовать всякие математические графики. А сейчас когда под рукой столько крутых инструментов, грех не срендерить что-нибудь забавное. За основу я решил взять Go-библиотеки image, image/color, image/png для работой с растром. Пока что у меня только набросок того что должно получится в итоге. Но надеюсь на следующей неделе доведу это до ума.

Абстрактная фабрика на Haskell

К функциональным языкам программирования я уже давно испытываю неподдельный интерес, особенно к ML-семейству и в частности к Haskell. Пожалуй такой же трепет я испытываю только к LISP-языкам. Но к сожалению практических книг по созданию приложений на Haskell очень и очень мало, поэтому я решил разбираться самостоятельно. На данный момент сделал набросок реализации абстрактной фабрики на Haskell. Потом попробую реализовать и другие ООП-паттерны в таком же виде как я сделал это для Go при написании хабростатьи Язык Go: реабилитация императивного программирования.

Программирование, искусственный интеллект и тезис Тьюринга-Чёрча

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

3 минуты в Космосе. Игра написанная на javascript

Мой товарищ недавно закончил свою первую игру для Андройда 3 Minutes In Space.

В игре 3 Minutes In Space вам представится возможность управлять космонавтом, летящим в открытом космосе. Его кора

Обработка ошибок в RESTful — приложениях

За последнее время очень многие веб-фреймворки обзавелись RESTful роутингом. Более того, REST стал де-факто стандартом проектирования архитектуры веб-приложений. Практически все более-менее значимые сервисы обзавелись RESTful API с представлением данных через xml и json форматы. Такой популярности REST помогло как появление большого количества руководств, так и горячие обсуждения REST среди специалистов.

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

Хорошие верстальщики отправляются на небеса, а плохие куда захотят. Или — почему БЭМ не приносит счастья?

Все мы привыкли слышать поучительные разговоры о том "как надо верстать", или о том "как не надо". Иногда понятие "как надо" строится на объективных фактах, иногда на фактах которые скрыты где-то в глубине проблемы. Всё вместе это образует некоторые правила вёрстки, которыми и руководствуется верстальщик в своей повседневной работе.

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

cssless30-го ноября 2013комментировать

Статическая и динамическая композиции в c++

Возможность метапрограммирования в c++ позволяет расширить тривиальные способы композиции классов, варьируя сцепленность и зависимость объектов.

designcpp18-го сентября 2012комментировать

Зависимость (dependency) и сцепленность (cohesion) на примере MVC-архитектуры

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

Тем не менее, полезно представлять, какие проектные решения повышают сцепленность (что хорошо), а какие увеличивают зависимость (что плохо).

designmvc25-го августа 2012комментировать

Подключение c/c++ кода к haskell-проекту!

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

Эта статья для тех, кто хотел бы опробовать Haskell на деле, но имеет горы полезного C и C++ кода с которым требуется считаться.

haskellcpp5-го августа 2012комментировать

2012–2016 © Денис Крешихин