Как стать автором
Обновить
4
0.3
Евгений @pewpew

Бэкенд разработчик

Отправить сообщение

PHP-скрипт, который обновляет сам себя

Время на прочтение4 мин
Количество просмотров34K


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

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

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

Это не туториал, поэтому вот сразу окончательный вариант скрипта: www.webasyst.com/etc/ru/selfupdate-1 (скрипт index.php; ≈20 КБ).
Скрипт содержит класс selfUpdate, который выполняет обновление самого себя (скачивает обновленную версию файла index.php и заменяет ей работающую в текущий момент).

Под катом рассмотрим как устроен процесс обновления и какие могут возникнуть проблемы при обновлении.
Читать дальше →
Всего голосов 80: ↑57 и ↓23+34
Комментарии58

Пишем плагин-диссектор для Wireshark

Время на прочтение14 мин
Количество просмотров25K
imageWireshark — одна из незаменимых утилит для «прослушки» сети, при работе с сетевыми протоколами. В состав программы уже входит некое количество диссекторов1, которое помогают детально рассмотреть пакеты базовых протоколов. Но при работе над проприетарным протоколом компании Nortel я столкнулся с отсутсвием подходящего диссектора. А нужен он был как воздух. Выход был очевиден — написать свой. Что я и сделал.
Таким образом, имея небольшой опыт написания плагина «анатома» под Wireshark, я решил поделиться знаниями и опытом с сообществом. Ну и для себя записать, на случай, если в будущем понадобится.

Диссекция — лат. dissectio, от dissecare, рассекать
Читать дальше →
Всего голосов 74: ↑74 и ↓0+74
Комментарии18

Многопользовательский чат на BAT

Время на прочтение3 мин
Количество просмотров22K
Был период, когда в универе задали сделать несколько чатов. В зависимости от вариантов, были заданы различные способы взаимодействия программ от сокетов до майлслотов (mailslot). Когда задания были прикончены, остались силы взяться за скрипты BAT. Вот что получилось…



Всё что нужно для запуска:
1. Взять код по ссылке в конце статьи
2. Сохранить код в файл *.bat
3. Положить файл в сетевую папку
4. Запустить файл с разных компов (можно и с одного)

В комментариях предложили использовать совместно с DropBox, но говорят — что работает весьма не быстро.
Читать дальше →
Всего голосов 247: ↑242 и ↓5+237
Комментарии72

3D кино смотрим дома

Время на прочтение4 мин
Количество просмотров173K
В статье описана нехитрая конструкция, позволяющая просматривать 3D-фильмы, уже появляющиеся на торрентах.
Читать дальше →
Всего голосов 204: ↑191 и ↓13+178
Комментарии95

Visual PHP для Windows

Время на прочтение10 мин
Количество просмотров61K
На сегодняшний день язык PHP широко распространён, он прост в освоении и понимании, и наверное поэтому он так популярен у начинающих программистов. Без знаний PHP не поправить блок голосования на сайте, не отредактировать PHP шаблон, не вставить рекламный баннер. Многие идут дальше и изучают язык более углубленно, ведь это не только интересно, но и приносит стабильный доход, благо разнообразных предложений для PHP программистов всегда в избытке.

Но что делать, если хочется чего-то большего? Если надоело писать однотипные классы для онлайн-казино, ковыряться в Joomla/Drupal/PHPBB очередного заказчика?
Читать дальше →
Всего голосов 145: ↑110 и ↓35+75
Комментарии106

FreeBSD + PostgreSQL: тюнинг сервера БД

Время на прочтение7 мин
Количество просмотров26K
Привет, Хабрсообщество!

Наверное, моя статья будет не интересна матерым сисадминам и покажется копипастом. Но я адресую ее тем, кто, как и я, будучи только разработчиком, впервые столкнулся с необходимостью еще и администрировать сервер, при этом решая задачи высоконагруженной БД. И чтобы гугл вас не проклял, постараюсь собрать в одном месте основные приемы для разгона сервера БД, которые мне успешно удалось реализовать.
Читать дальше →
Всего голосов 58: ↑52 и ↓6+46
Комментарии67

В поисках идеальной CAPTCHA

Время на прочтение16 мин
Количество просмотров41K
CAPTCHA, или Completely Automated Public Turing Tests to Tell Computers and Humans Apart (Полностью автоматический публичный тест Тьюринга для различения компьютеров и людей), была создана для того, что бы убедиться, что введенные данные не были сгенерированы компьютером. Эти своеобразные тесты обычно используются в Интернете для защиты форм регистрации и комментирования от спама. Если быть честным, я испытываю смешанные чувства насчет CAPTCHA. Она в большинстве случаев раздражает меня, но не смотря на это я использовал CAPTCHA в качестве защиты на некоторых сайтах.

В этой статье я хочу углубиться в поиск идеального решения проблемы растущего количества сгенерированного людьми спама. Мы взглянем на то, как и зачем используется CAPTCHA и ее влияние на юзабилити в поисках ответа на ключевые вопросы: что представляет из себя идеальная CAPTCHA и почему в качестве защиты предпочитают именно ее?
Читать дальше →
Всего голосов 119: ↑116 и ↓3+113
Комментарии133

Простейший блог на Symfony 2

Время на прочтение10 мин
Количество просмотров50K
Привет, %username%!
symfony — популярный PHP-фреймворк, на котором создано не мало серьезных проектов. Но в русскоязычном сообществе он распространен гораздо меньше. То ли это связано с более высоким порогом входа, то ли с отсутствием русскоязычной документации.
В этом статье я хочу рассказать о создании простейшего блога на symfony2.
Читать дальше →
Всего голосов 55: ↑48 и ↓7+41
Комментарии102

Сравниваем микроконтроллеры до 50 рублей: ARM жаждет крови

Время на прочтение3 мин
Количество просмотров127K
Года так 2 назад на одном из форумов по радиоэлектронике я попросил посоветовать, какой микроконтроллер изучать — и больше всего голосов было в поддержку AVR — популярных, 8-и битных МК, под которые легко писать, программатор можно сделать одной рукой (из проводов и резисторов)… Будущее было ясным и безоблачным, пока в 2009-м году не пошли новости про новые микроконтроллеры на ядре ARM Cortex-M0, которые должны были стоить меньше 1$ (во что в принципе никто не верил) и перекрыть кислород 8-и битным микроконтроллерам.

Сейчас на дворе середина 2011 года и пришла пора посмотреть, что и по какой цене у нас можно купить, и какая получается расстановка сил (цены — из terraelectronica.ru).
Читать дальше →
Всего голосов 114: ↑107 и ↓7+100
Комментарии100

Компилятор .NET в JavaScript и пример XNA-демо в браузере

Время на прочтение1 мин
Количество просмотров2.3K
Разработчик Kevin Gaad, который судя по его профилю работает в компании Mozilla, представил свою разработку – компилятор .NET(C#) кода в JavaScript. Для демонстрации работоспособности библиотеки Кевин опубликовал портированный пример демонстрационного проекта игры на базе XNA 3.1.

image

Игра работает в браузерах IE9+, Firefox 4+, and Chrome 11. Разработчик пишет, что Opera не поддерживается из-за проблем браузера с ECMAScript5 и в Chrome 12 и 13 есть баги, которые мешают нормальной работе.

Проект компилятора с открытым кодом доступен на сайте GitHub. Разработчик сделал анонсы своей работы на Hacker News и Reddit, где можно ее прокомментировать. Кроме того, демонстрационный проект с игрой доступен здесь: Platformer.zip.

Выглядит впечатляюще.
Всего голосов 110: ↑96 и ↓14+82
Комментарии34

Новый алгоритм для депикселизации графики

Время на прочтение1 мин
Количество просмотров8.8K


Сотрудник Microsoft Research Йоханнес Копф (Johannes Kopf) совместно с профессором Дани Лисчински опубликовали научную работу (dropbox, narod.ru, depositfiles.com) с описанием нового алгоритма депикселизации, который значительно превосходит все существующие методы. Разница в качестве действительно колоссальна.
Читать дальше →
Всего голосов 215: ↑204 и ↓11+193
Комментарии107

Самое простое и захватывающее падение в мир микроконтроллеров или Meggy Jr RGB

Время на прочтение3 мин
Количество просмотров28K
Итак, всем любителям ретро игр, пиксель арта, железа типа arduino и тех, у кого закрадывалась мысль написать свою простенькую игру, при этом не сильно вдаваясь в дебри даташитов!

Хочу представить вам 8-битный игровой хендхелд, на микроконтроллере Atmega-328, с большим, ярким экраном с пикселями, которые невозможно не заметить.
На борту есть: 32КБ памяти для вашего кода, 6 кнопок, простенький динамик, 8 дополнительных диодов и разъем для программирования и обмена данными.

image

Что можно сделать с такими малыми ресурсами?
Но ведь в любом деле основной ресурс — это ваше воображение и опыт!

Читать дальше →
Всего голосов 64: ↑63 и ↓1+62
Комментарии26

ChucK — программируем звук

Время на прочтение5 мин
Количество просмотров15K
Языков программирования существует великое множество: от мейнстримовых до эзотерических, от учебных до узкоспециализированных. И если с мейнстримом знакомы так или иначе многие из нас (хотя бы на уровне школьного бейсика), то языки программирования, предназначенные для выполнения специальных задач, остаются для многих тайной покрытой мраком. Давайте немного приоткроем занавес и посмотрим, пусть одним глазком, мир программирования… музыки!

Итак, наш сегодняшний гость ChucK, придуманный Пери Куком (Perry Cook) и Ги Вонгом (Ge Wang) из университета Принстон в 2003 году, последняя версия вышла в 2009 году.
ChucK — один из языков программирования, предназначенный для написания музыки, синтеза звука в реальном времени и организации взаимодействия различной специализированной периферии.

Читать дальше →
Всего голосов 50: ↑48 и ↓2+46
Комментарии15

Как не надо разрабатывать на Zend Framework

Время на прочтение8 мин
Количество просмотров8.1K

Здравствуйте! На днях подвернулась работа — дописать сайт на zend framework. Программист, который начал разрабатывать этот проект не успевал в сроки, не выполнял требования заказчика и в итоге его заменили. Открыв первый раз исходный код я ужаснулся от того количества ошибок, которые допускал разработчик и ведь он утверждал заказчику что является опытным специалистом. Далее я попытаюсь рассказать про некоторые ошибки, которые были им допущены. Данный материал будет полезен начинающим ZF-программистам, в качестве инструкции того как делать нельзя
Читать дальше →
Всего голосов 98: ↑76 и ↓22+54
Комментарии75

Учим bash-скрипты, пишем Sokoban

Время на прочтение4 мин
Количество просмотров138K
Мне кажется, что на свете еще есть люди, которые хорошо знают несколько языков программирования, но при этом не пишут скриптов для bash, потому что скриптовый язык bash выглядит для них слишком странным. Чтобы доказать, что bash — это несложно, я написала игру Сокобан (или Грузчик, кому как нравится), и хочу рассказать, как она работает.
Краткая справка по bash, скриншот игры, исходный код и ссылка на файл - под катом
Всего голосов 170: ↑164 и ↓6+158
Комментарии67

Техники сжатия кода

Время на прочтение5 мин
Количество просмотров5.6K
Джед Шмидт, Томас Фухс и Дастин Диаз — достаточно известные в JavaScript-коммьюнити ребята в последнее время нашли себе новую развлекуху — писать полезные штуки размером не больше одного твита, то есть 140 байт. Даже домен зарегали — 140byt.es, куда приглашаются все желающие попробовать свои силы в написании супер-компактных функций.

Естественно, в ход идут все самые изощренные способы и техники уменьшения размера исходника. У них есть вики-страничка с советами, которую я и решил перевести.

Сразу оговорюсь, что читаемость обработанного таким образом кода стремится к нулю, так что использовать эти трюки стоит только в случаях, когда размер действительно превыше всего. Например, при участии в конкурсе JS1k.

Читать дальше →
Всего голосов 146: ↑140 и ↓6+134
Комментарии121

Работа с OAuth v2

Время на прочтение1 мин
Количество просмотров4K
Предлагаю почитать статью о «прикручивании» второй версии протокола OAuth (он на стадии черновика еще, ага). Сперва немного об общих принципах работы, потом привожу практическую часть (фреймворк Kohana, модуль OAuth).

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

Дико извиняюсь, но топики-ссылки мне неподвластны. Вынужден нагло публиковать в качестве полноценного топика.
Всего голосов 42: ↑31 и ↓11+20
Комментарии2

FAQ по JavaScript: задавайте вопросы

Время на прочтение1 мин
Количество просмотров7.5K

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

Мы ответим на ваши вопросы, касаемо сомнительных моментов языка(this, arguments, bind, функции, замыкания, модули), ECMAScript 3, 5, 6+, реализации языка в конкретных браузерах, фрэймворков(jQuery, Prototype, Mootools...), архитектуре приложений(паттерны, MVC...), тестировании, и вообще всего с чем связан JavaScript и разработка на JavaScript(как клиентской так и серверной).

Если у вас нет возможности задать вопрос в комментарии, то вы можете связаться с нами по другим источникам, которые вы можете найти в профиле: azproduction, TheShock или по email: azazel.private@gmail.com, shocksilien@gmail.com

В конце недели, начале следующей мы опубликуем ответы на все ваши вопросы.
Этот пост краток, а ответы будут развернутыми!
Всего голосов 63: ↑54 и ↓9+45
Комментарии215

Пять способов вызвать функцию

Время на прочтение5 мин
Количество просмотров372K
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
Читать дальше →
Всего голосов 142: ↑133 и ↓9+124
Комментарии84

Информация

В рейтинге
2 315-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Game Developer
Senior
PHP
Git
SQL
REST
Godot Engine
GDScript
Lua
Redis
Yii framework