Pull to refresh
Ворч Ун @sav1812read⁠-⁠only

Разработчик

Send message

Делаем вебсокеты на PHP с нуля

Reading time18 min
Views312K
Некоторое время назад я выбирал библиотеку для работы с вебсокетами. На просторах интернета я натыкался на статьи по интеграции node.js с yii, а почти все статьи о вебсокетах на хабре ограничивались инструкциями к тому, как использовать phpdaemon.

Я изучал библиотеки phpdaemon и ratchet, они достаточно монструозны (причём используя ratchet для отправки сообщения конкретному пользователю рекомендовано дополнительно использовать wamp). Мне не совсем было понятно для чего использовать таких монстров, которые требуют установку других монстров. Почитав исходники этих, а также других библиотек, я разобрался как всё устроено и мне захотелось написать простой вебсокет-сервер на php самостоятельно. Это помогло мне закрепить изученный материал и наткнуться на некоторые подводные камни, о которых я не имел представления.

Так я решил написать необходимый для меня функционал с нуля.

Получившийся код и ссылка на демонстрационный чат в конце статьи.
Читать дальше →

Forth-процессор на VHDL

Reading time9 min
Views18K
В этой статье я расскажу, как самому написать процессор на VHDL. Кода будет не очень много (я, по крайней мере, надеюсь на это). Полный код выложен на гитхабе, и там же, можно посмотреть несколько итераций написания.

Процессор попадает под класс soft-процессоров.
Читать дальше →

Разомнем мозг при помощи Forth?

Reading time5 min
Views46K
image

Порой возникает желание размять свой погрязший в объектно-ориентированном программировании мозг чем-то новеньким и необычным. Конечно, на помощь в этой ситуации может прийти любой функциональный язык программирования, например, Haskell, Erlang, Lisp или OCaml. Но сейчас даже ими уже вряд ли кого-то можно удивить. Нет, хочется чего-то совершенно другого. В такой ситуации на помощь к нам спешит Forth — стековый язык программирования.

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

Forth и шейдеры

Reading time6 min
Views28K
Речь у нас пойдёт о поэзии. Минимализм языка программирования Forth и красота образов демосцены подтолкнули программиста Брэда Нельсона к идее Forth Haiku. Подражая японским хайку, Брэд писал свои первые программы из трёх строк, состояли они из пяти, семи, и снова пяти слов. Но в отличии от традиционного японского жанра, поэзия на языке Forth порождала картины не в воображении читателя, а зримо, на экране компьютера. Эта затея могла бы остаться причудой одинокого фаната компьютерного ретро (Forth прочно ассоциируется со старыми добрыми семидесятыми), если бы Брэд не воплотил её на самой что ни на есть современной платформе (WebGL) и не сделал бы онлайн-редактор общедоступным.

Вот пример кода Forth Haiku и изображение, которое этот код создаёт: «Light Drop» by Brad Nelson.

: iii x y z*
Sin ; x 5 * x y
- iii exp y iii

Light Drop by BradN

Впереди нас ждут немало удивительных (в том числе и «живых») картин, но сперва — немного теории.
Читать дальше →

FORTH: наносервера и наноклиенты. Часть 1

Reading time4 min
Views13K
Пришло время рассказать о еще одной стороне применения замечательного языка Форт.
Этим циклом статей я покажу, как с его помощью можно создавать крошечные клиент-серверные приложения. Каждое из которых можно использовать как исследовательский и обучающий инструмент.
Для развлечения нам понадобится Windows вплоть до семерки и пакет SP-Forth. Андрей Черезов декларировал возможность запуска его форт-системы под Линуксом, но я это не проверял.

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

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

VMmanager: Сравнение производительности локальных хранилищ

Reading time4 min
Views18K
Наши клиенты часто задают вопросы о том, какое из поддерживаемых в VMmanager типов хранилищ данных самое лучшее, самое быстрое, и какое выбрать в их случае. К сожалению, ответить на этот вопрос просто так не получится.

Поэтому мы решили провести тестирование производительности хранилищ данных.
image
Читать дальше →

Невыносимая сложность программирования

Reading time4 min
Views81K

A n00b y0u areКогда-то книга “Совершенный код” Стива МакКоннела произвела на меня большое впечатление. Я лично думаю, что эту книгу обязательно должен прочесть каждый, кто зарабатывает на жизнь написанием кода. Особенно настоятельно я рекомендую эту книгу новичкам.

Настоящие размышления о программировании посвящаются главе 33 “Личность” и тем, кто решил связать свою жизнь с разработкой программного обеспечения.
Читать дальше →

GreenCubes: от Minecraft до MMORPG за 4(?) года

Reading time14 min
Views29K
Приветствую вас, уважаемые Хабравчане!

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

Minecraft


Наш проект (в начале нас было только двое: я и Feyola) начинался как сервер Minecraft для друзей. То есть, скорее для друзей друзей друзей, потому что с друзьями мы играли и раньше, но в этот раз решили запуститься уже на более-менее постоянной основе и не сильно фильтровать приходящих людей. Запуск наметили на 1 ноября 2010 года, приурочив его к выходу Minecraft Halloween Update, который принёс в Minecraft много нового. Мы расстались с нашим старым миром и начали всё заново, серьёзно и даже без админских команд.
Читать дальше →

Пишем сайт с новостями на Wt

Reading time9 min
Views18K
Для начала расскажу немного о себе. Я студент 4 курса МАИ специальности «ЭВМ, комплексы, системы и сети», а также начинающий программист на С++/Qt. Очень давно я хотел научиться веб-разработке, но до изучения всех необходимых языков и технологий руки никак не доходили. Недавно на Хабре появилась статья о создании веб-приложений с помощью C++ библиотеки Wt, и я решил поближе познакомиться с этой библиотекой.
Читать дальше →

Назад, к технологиям верхнего палеолита, от любимых всеми REST, STATEless, CRUD, CGI, FastСGI и MVC

Reading time7 min
Views69K
«Только со смертью догмы начинается наука.»
// Галилео Галилей


«Я начал завидовать рабам. Они всё знают заранее. У них твёрдые убеждения.»
// х/ф Марка Захарова «Убить дракона» по мотивам пьесы Евгения Шварца


Уже пару лет и дня не проходит, чтобы я не услышал (или не прочитал) от людей, начинающих новые проекты, фразу типа «Возьмем серверный движок для REST API и MVC, и погнали». Сначала я думал, что у этих слов есть один источник, может книжку какую завезли во все магазины или где-то в топе поисковиков лежит статья, зомбирующая разработчиков. Если же выяснять у них, что они понимают под REST и MVC, то можно повредиться умом. Ну с MVC уже все ясно, об этом я уже давно писал, ничего не изменилось, только усугубилось, стоит набрать в Google Images «mvc» и мы увидим страшное, стрелочки в любые стороны. Ну а про REST отвечают следующее: ну как же, нам нужно из браузерного GUI и мобильного приложения вызывать серверные методы, например: setUserCity(userId, cityId) или calculateMatrix(data) или startVideoConverter(options, source, destination) а потом мы столкнемся с большой нагрузкой и архитектура REST все решит. Дальше я задаю вопросы, от которых глаза округляются уже у тех, кто недавно еще горел праведной верой, рвался в бой и точно знал, что к чему в этом мире. Теперь можно перейти к рассмотрению терминологической катастрофы, в эпицентре которой мы с вами пребываем.
Читать дальше →

SELinux – описание и особенности работы с системой. Часть 1

Reading time11 min
Views290K


О SELinux на Хабре уже писали, однако, не так много опубликовано подробных мануалов по данной системе. Сегодня мы публикуем именно такой, подробный мануал по SELinux, начиная от информации по системе, и заканчивая гибкой настройкой политик.
Для того, чтобы не превращать пост в «простыню», сложную для понимания, мы решили разделить мануал на две части. Первая будет рассказывать о самой системе, и некоторых ее особенностях. Вторая – о настройке политик. Сейчас публикуем первую часть, чуть позже будет опубликована и вторая часть.

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

Портируем C# LINQ на PHP

Reading time8 min
Views10K
Функциональность LINQ запросов в C# переписана на PHP. Изначально библиотека задумывалась как тренинг, так как подобные библиотеки уже существуют, но потом было решено её опубликовать для всех. Скопировать LINQ на PHP один в один невозможно, поскольку возможности языков C# и PHP очень разные. Отличительной возможностью предлагаемого решения является ориентация на итераторы, ленивые лямбда выражения и сигнатура LINQ методов, идентичная C# на сколько это возможно. Все стандартные LINQ методы, естественно, реализованы. Описание возможностей проекта с объяснением причин, почему именно такое решение было выбрано, под катом.

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

Обещания JavaScript

Reading time19 min
Views205K
Всем привет, и ещё раз всех с прошедшими праздниками. Трудовые будни набирают обороты и вместе с ними растёт информационный голод мучающий нас. Мир разработки переднего конца не дремлет и готовит нам много сюрпризов в наступившем году, и уж поверьте мне, скучно не будет ни кому. Одна из новых особенностей которые нам готовят разработчики браузеров совместно с группами разработчиков пишущих спецификации — JavaScript Promises(далее в переводе — Обещания, прошу сильно не бить) — полюбившийся многим шаблон написания асинхронного кода обзаводится нативной поддержкой. Что же такое обещания и с чем их едят можно прочесть в нижеследующем переводе(слегка вольном) замечательной статьи Джейка Арчибальда.

Подробности

Pngquant — библиотека и утилита командной строки для сжатия png с потерями

Reading time1 min
Views11K
Вышла новая версия (2.0.1) утилиты.

Утилита позволяет преобразовывать png с 24 и 32 битами на пиксель в png с палитрой (8 бит).

Разработчики утверждают, что утилита в некоторых случаях позволяет уменьшить размер файла аж на 70% от исходного, сохраняя при этом альфа прозрачность (при этом утверждают, что прозрачность обрабатывается в IE6 лучше, чем у 24-битных png — не то, чтобы это всерьёз кого-то заботило...).

Особенности:

— создание новой палитры с использованием алгоритмов векторного квантования
— уникальный дизеринг, добавляющий к картинкам меньше шума, чем стандартный алгоритм Флойда-Стейнберга
— легко интегрируется со скриптам и gui (ну ещё бы, это же командная строка)
— есть ускоренный режим работы, для обработки большого кол-ва изображений

Давайте проверим. Под катом — картинки (сюрприз), i.e. — трафик.
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика (выпуск 6)

Reading time3 min
Views29K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Zephir — Ze(nd Engine) Ph(p) I(nt)r(mediate). Зефир — это компилируемый высокоуровневый язык программирования, предназначенный для написания PHP расширений без использования C. Проект от создателей Phalcon (скомпилированный PHP MVC Framework). О Zephir на Sitepoint
   

JSDB.IO — большая и качественная база нужных скриптов/библиотек/фреймворков на JavaScript. Все распределено по категориям: Animation, Application, Audio, Video, Games и др. Дабы собрать все популярные .js воедино добавлю еще три ссылки: Microjs (множество маленьких полезностей до 5кб), а еще jsdelivr и cdnjs, которые позволяют добавлять собственные скрипты.

Snap.svg — продукт от Adobe Webplatform. Недавно я рассказывал про "достойного конкурента Raphaël" и в комментариях оспоривали эту фразу из за отсутствия поддержки такого же множества браузеров. В разработке Snap участвует автор Raphaël — Дмитрий Барановский, а причина создания новой библиотеки для работы с SVG — невозможность поддерживать все возможности SVG в старых браузерах.

At.js — очень юзабельный скрипт для автозаполнения (в демо используется Emojify). А еще есть более функциональная библиотека для автозаполнения — Typehead от Twitter.
$('.atwho-inputor').atwho({
  at: "@", data: ["one", "two", "three"],
});

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

Трюки с CSS-анимациями: мгновенные изменения, отрицательные задержки, анимация transform-origin и другое

Reading time14 min
Views221K
Применяя CSS-анимации в повседневной работе, я постепенно выработал привычку экспериментировать с ними в свободное время. Постоянно пытаясь реализовать очередную интересную задумку с использованием как можно меньшего числа элементов HTML, я обнаружил немало способов сделать с помощью CSS довольно неочевидные вещи. В этой статье я хочу поделиться некоторыми из них.

Быстрое изменение состояния посреди анимации

Обычно анимации используются для того, чтобы плавно менять свойства элементов со временем. Однако изменения могут также быть практически мгновенными. Для этого надо задать два ключевых кадра с очень маленьким интервалом, например в 0.001%:

@keyframes toggleOpacity {
  50% { opacity: 1; } /* Turn off */
  50.001% { opacity: 0.4; }

  /* Keep off state for a short period */

  52.999% { opacity: 0.4; } /* Turn back on */
  53% { opacity: 1; }
}

Вот как я использовал этот приём для имитации мигающей неоновой вывески с помощью прозрачности и свойства text-shadow:


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

Raspberry PI и JAVA: пристальный взгляд

Reading time4 min
Views69K
Недавно на хабрахабре вышла статья о java на raspberry pi, увидев название которой было много ожиданий, а под катом оказался банальный Hello World!

Дело в том, что ко мне как раз ехала моя малинка и хотелось получить ответы на следующие вопросы:

1. Сравнима ли скорость работы java на малинке и настольном компьютере?
2. Насколько удобно работать с java на raspberry?
3. Есть ли адекватные библиотеки для работы с GPIO?

Вот на эти вопросы я и попробую дать ответы в этой статье.

Кому интересно: добро пожаловать под кат (графики и фотографий обнаженной малинки там не будет)
Читать дальше →

Облако.Mail.Ru + EncFS для резервного копирования домашнего фотоархива

Reading time6 min
Views114K
In Clouds (c) Fotolia/dvarg, 18 KB В конце декабря Mail.Ru вновь (впервые с 1997 года ;) выпустила революционный продукт — облачное хранилище, первым активным пользователям которого бесплатно выдают один терабайт. 1 Тб — по меркам начала 2014-го года это совершенно эпический объем, по крайней мере в масштабе национальной отрасли ИТ. Ради справедливости можно отметить, что некоторые китайские компании дают и больше, однако практическая применимость таких предложений для большинства читателей Хабрахабра выглядит сомнительной.

Небольшим изъяном актуальной версии Облака по мнению многих моих друзей и коллег выглядит то, что Облако (по крайней мере официально) не поддерживает WebDAV. Это не позволяет «из коробки» использовать шифрование с помощью простых и популярных в народе средств вроде Boxcryptor. Поскольку сам по себе Boxcryptor — это всего лишь удобная графическая надстройка над encfs+fuse, я решил для себя и для друзей составить короткую и простую инструкцию, как эффективно шифровать данные бэкапов в Облаке.Mail.Ru

Постановка задачи


Я продвинутый фотолюбитель. Мой фотоархив насчитывает примерно 600Гб данных, причем примерно половина из них — это выполненные в высоком разрешении сканы родительских слайдов, начиная с 1957 года. Почти все хранится в NEF+CR2 (это raw-форматы Canon и Nikon), каждая фотокарточка занимает от 15 до 60 мб. Иными словами, бесплатный терабайт от Flickr меня совсем не устраивал в частности из-за невозможности хранить необработанные исходники фото. Начиная с 2008-го года, резервирование архива выглядит так: раз в году я покупаю современный жесткий диск стоимостью 100 евро и копирую на него все содержимое предыдущего диска, а старый HDD отправляется «на пенсию» в медиа-сервер, который включается 3-4 раза в год. У этого подхода много достоинств (несмотря на смертность жестких дисков, данные еще ни разу не пропадали), но есть огромный недостаток — физическое расположение хранилища.

Я много путешествую по миру, и за последние 10 лет суммарно провел в России (где находится медиа-сервер и стопка «отставных» HDD) не более 4-х лет. Иногда случаются казусы, связанные с потерей внешних винчестеров — так я потерял значительную часть архива фотографий 2012-го года, которые банально не довез до своего дома на родине. На словах решение простое — «go cloud», а вот на деле тарифы всех мало-мальски удобных сервисов, позволявших заархивировать 1Тб оригиналов фотоизображений, были долгое время прямо-таки заоблачными.

И вот 20 декабря 2013 года нам было объявлено о том, что все желающие обладатели ящика на mail.ru могут получить в подарок 1 терабайт. Бесплатно. Для любых файлов. Но только у многих возникают вопросы, как хранить свои данные в облаке в зашифрованном виде.

Пошаговое решение для Mac и высокоуровневое описание для Windows

Электронная торговля в Universal Analytics

Reading time3 min
Views36K
image
На Хабре уже писали (1,2) про Universal Analytics от Google.
Электронная торговля и отслеживание событий на сайте — это главные функции аналитиков интернет-магазинов и компаний, которые отслеживают продажу товаров и услуг. В данном топике мы рассмотрим их настройку для Universal Analytics.
Читать дальше →

Обзор бесплатных сервисов для веб-разработки

Reading time4 min
Views144K
Пост является личной подборкой полезных и нужных онлайн сервисов, которые позволяют бесплатно (или условно бесплатно) создавать действительно крутые вещи и разворачивать их в Сети. Не претендую на новизну или на полноту, но буду счастлив, если кому пригодится.

Всем нам иногда хочется попробовать новую идею, запилить какой-нибудь сайтик про манулов, но чтоб обязательно на node.js, хайлоад реди, с мемкешем, монго, фейловером и с претензией на мировое господство. У меня для Вас хорошие новости: благодаря щедрости проклятых западных капиталистов всё это можно получить совершенно бесплатно.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity