Pull to refresh
36
0
Василий Болгар @reanimatorzon

Пользователь

Send message

Groovy за 15 минут – краткий обзор

Reading time8 min
Views374K
Groovy — объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями Python, Ruby и Smalltalk.

Groovy использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками. Язык может использоваться в любом Java проекте или как скриптовый язык.

Возможности Groovy (отличающие его от Java):

— Статическая и динамическая типизация
— Встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений
— Замыкания
— Перегрузка операций

[http://ru.wikipedia.org/wiki/Groovy]

Более того, почти всегда java-код — это валидный groovy-код.
Читать дальше →
Total votes 63: ↑55 and ↓8+47
Comments52

Debian: Apt-Pinning на примере php5-fpm и nginx 1.0.4 (Debian way)

Reading time3 min
Views5.9K
Всем Debian'щикам известно, что Debian настолько же стабилен, насколько тормознут на «новинки». В частности, пакета php5-fpm, так многими любимого, в стабильном репозитории до сих пор нет. Решив чуток поискать, как делают люди, понял, что многие собирают его из «сорцов». Мне это как-то стало не по душе. Поэтому сегодня я поставил его в стиле Debian-way, с помощью Apt-Pinning.

Apt-Pinning, вкратце, это технология, которая показывает, из какого репозитория предпочтительнее ставить пакет.
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments18

Сага о том, как мы писали консоль

Reading time8 min
Views21K
            Если посадить тысячу мартышек за тысячу пишущих машинок, то за тысячу лет они напишут эмулятор терминала. — вместо эпиграфа.

Извините фальстарт, это не я, это андроидный смартбук.

Когда мы только запускали облако, первой проблемой было «как нам получить консоль». Штатный механизм XCP поразумевает, что консоль рисуется с помощью VNCTerm, а желающий её увидеть должен сначала пойти в XenAPI, получить там session-id консоли, пойти на порт консоли, передать session-id, получить RFB, завёрнутый в HTTP, развернуть HTTP, вынуть RFB (он же VNC), отдать её локальному рендереру VNC (VNC-клиенту или java-апплету с тем же функционалом). При этом консоль закрывалась (сессия рвалась) при каждой перезагрузке виртуальной машины. Она рвалась даже при миграции виртуальной машины. Другими словами, это была технология, которая подразумевала «глянул одним глазком, починил ssh/iptables и забыл». Неудобно, медленно, сложно. Выкатывать такое в продакт совсем не хотелось.

И я залез в дебри serial-howto, console-howto и ещё несколько ужасных документов, рассказывающих о том, как правильно нужно конфигуриовать прерывания на ISA плате у мультикарт, а так же специфику настройки linux-2.2 для работы с оными. Параллельно изучалось устройство консоли в зене (внимательный читатель мог даже заметить, когда именно я более-менее разобрался в этом вопросе — я писал на хабре краткий обзор того, что происходит с консолью).

После этого пришла мысль: нужно писать своё, потому что готового чужого хорошего нет.

Сначала мы хотели взять хотя бы готовые компоненты и сделать из них своё. Я помню до сих пор ту замечательную схему, в которой мы планировали сохранять в БД вывод anyterm'а, делать двойное туннелирование последовательного порта с использованием UDP… Выглядело это, мягко скажем, неприглядно.

Потом пришла в голову мысль выпилить anyterm. Для этого нужно было посмотреть, как работают терминалки. Это было очень забавно и поучительно (желающие могут изучить исходный текст PuTTY). Главной проблемой в этом изучении было то, что они много рисуют на экран. Прямо в процессе обработки ввода. Отделить специфику DC от, собственно, того, что является консолью, было сложно.

Через некоторое время мы пришли к идее «нам нужен свой эмулятор терминала».
Задача казалась относительно простой, пока мы не прикоснулись к бездне, именуемой «escape-коды и типы терминалов...».

Пишущие машинки


Итак, в начале была пишущая машинка. В какой-то момент возникло желание совместить телеграф с пишущей машинкой. Так возник телетайп
Разумеется, инженерам, создававшим телетайп, не было никакого резона делать все с нуля. Они просто приделали коды к каждой клавише пишущей машинки. После некоторых боёв в стиле MS VS Netscape, был создан стандарт html5 на коды для оных машинок, то бишь телетайпов. Если мне память не изменяет, то это ASCII, где предусмотрены все комбинации клавиш, характерные для американской пишущей машинки. Включая код BELL, который, кстати, должен вовсе не делать BEEP, а делать «дзыньк», ибо у пишущих машинок был именно колокольчик, а не спикер.

Читать дальше →
Total votes 133: ↑126 and ↓7+119
Comments91

SRP-6: аутентификация без передачи пароля

Reading time5 min
Views33K
Как и было обещано в соседней теме, где рассказывался велосипед, выкладываю описание алгоритма SRP RFC2945 — способе регистрации и аутентификации пользователей безопасным образом по небезопасному каналу. Вот только в процессе подготовки статьи я обнаружил более свежую версию протокола, SRP-6, вместе с реализацией, в связи с чем решил выбросить свои архаичные наработки по SRP-3, и просто дать ссылки на имплементацию новой версии.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments28

RentFilter.ru — снимите квартиру без посредников

Reading time2 min
Views2.3K

Не хотите платить агентам по недвижимости комиссию?



Новый проект www.rentfilter.ru подтверждает: снять квартиру без помощи риэлтеров — реально! Да, зайдя на любой сайт с объявлениями об аренде квартир, вам придется позвонить не по одному десятку номеров, прежде чем найдете объявление действительно от владельца квартиры, а не от риэлторского агентства. Но и это может случиться, только если вам очень повезет.

RentFilter.ru поможет снять квартиру без посредников. Наши роботы круглосуточно фильтруют объявления об аренде помещений и оставляют только те, которые подают сами хозяева квартир. Просто позвоните по указанному в объявлении телефону, посмотрите квартиру, изучите все документы на право собственности, подпишите договор и — пакуйте чемоданы. Кстати, на RentFilter.ru можно прочитать все, что нужно знать, если вы решили снять квартиру без агентской помощи. Здесь же можно скачать стандартный договор аренды жилого помещения.
Читать дальше →
Total votes 128: ↑107 and ↓21+86
Comments191

«Выглядит похоже». Как работает перцептивный хэш

Reading time6 min
Views121K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →
Total votes 149: ↑145 and ↓4+141
Comments46

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

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

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

Читать дальше →
Total votes 50: ↑48 and ↓2+46
Comments15

Принцип цикады и почему он важен для веб-дизайнеров

Reading time6 min
Views229K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Total votes 696: ↑682 and ↓14+668
Comments119

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

Reading time5 min
Views368K
Мне часто приходится сталкиваться с JavaScript-кодом, ошибки в котором вызваны неправильным понимаем того, как работают функции в JavaScript (кстати, значительная часть такого кода была написана мной самим). JavaScript — язык мультипарадигменный, и в нем имеются механизмы функционального программирования. Пора изучить эти возможности. В этой статье я расскажу вам о пяти способах вызова функций в JavaScript.
Читать дальше →
Total votes 142: ↑133 and ↓9+124
Comments84

OAuth 2.0 простым и понятным языком

Reading time7 min
Views792K
Логотип OAuth 2.0

На хабре уже писали про OAuth 1.0, но понятного объяснения того, что такое OAuth 2.0 не было. Ниже я расскажу, в чем отличия и преимущества OAuth 2.0 и, как его лучше использовать на сайтах, в мобильных и desktop-приложениях.

Что такое OAuth 2.0


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

Читать дальше →
Total votes 168: ↑153 and ↓15+138
Comments44

Node.js — руководство по убеждению начальства

Reading time5 min
Views24K
От переводчика: Я только начинаю присматриваться к Node.js, и, обнаружив это руководство, сильно пожалел, что оно не попалось мне на глаза раньше. Надеюсь, что этот перевод поможет многим разобраться, что же такое Node, и с чем его едят.

У вас уже чешутся руки попробовать Node.js и пора начинать обрабатывать начальство? Не торопитесь! Для некоторых компаний, которые я консультировал на предмет того, подходит ли им Node.js, правильный ответ был — «Нет!»

Это руководство — набор основанных на моём личном опыте советов для тех, кто хочет узнать, имеет ли смысл применять Node у себя в компании, и, если да, то как убедить в этом начальство.
Читать дальше →
Total votes 62: ↑57 and ↓5+52
Comments102

Создание объектов в Javascript

Reading time5 min
Views70K
Гибкость Javascript позволяет создавать объекты множеством способов. Но как это нередко случается, разнообразие таит в себе множество подводных камней. Из этой статьи Вы узнаете о том, как разглядеть и обогнуть эти опасные рифы.
Читать дальше →
Total votes 133: ↑119 and ↓14+105
Comments68

Как привлечь пользователей в ваш стартап

Reading time6 min
Views1.4K
Наиболее частый вопрос, который я слышу от молодых предпринимателей — «Как я заполучил пользователей?»

И вот как я это делаю.

Обо мне

(испытываешь странное чувство от описания себя, но в случае если вы читаете это и удивляетесь, кто же этот парень… на самом деле я всего лишь пытаюсь помочь).

Я сделал блог с 5 миллионами читателей, рекламную биржу которая охватывает больше людей чем Facebook, написал книгу которая была 12-ой на Amazon и сделал еще кучу всяких разных странных вещей, которые популярны и приносят деньги. Я создал новую растущую компанию социальных покупок. Я ангел-инвестор и советник в дюжине разных компаний и одном университете. Я присутствую на нескольких журнальных обложках и тут (оцените количество просмотров и комментарии людей, которые желали бы чтобы их «папочка был так же крут» как я).
Читать дальше →
Total votes 123: ↑100 and ↓23+77
Comments65

GitHowTo — тур обучения гиту на русском

Reading time1 min
Views15K
image

Спешу поделиться радостной новостью о запуске проекта GitHowTo — интерактивного тура-обучалки основам Git.

За основу были взяты идеи gitimmersion.com, но переведены на русский язык и немного изменены под реалии не-ruby разработки, поэтому спешите любить и жаловать — githowto.com!

Буду чрезвычайно рад любым замечаниям и пожеланиям к проекту.
Total votes 179: ↑178 and ↓1+177
Comments68

Еще одно Canvas руководство [1]: Canvas элемент, прямоугольники, пути

Reading time5 min
Views19K

Зачем еще одно руководство?


Потому что большинство уже существующих руководств рассматривают только основы, а все остальное приходится собирать по кусочкам поэтому я решил написать сжатое, полное руководство по canvas для программистов (а то часто пишут для простых людей которые изучают попутно и программирование).
Читать дальше →
Total votes 84: ↑76 and ↓8+68
Comments29

Angry Birds стали веб-приложением

Reading time1 min
Views3.7K


На конференции Google I/O компания Rovio презентовала веб-версию Angry Birds, основанную на WebGL. Она «брендированная» (расположена по адресу chrome.angrybirds.com и снабжена логотипом Хрома), но запускается и в других браузерах. Впрочем, вот тут вошедшая в поговорку скорость Chrome становится настоящим конкурентным преимуществом — от нее теперь зависит количество FPS.
Игра уже была добавлена в Chrome Web Store.

Google также объявил на I/O о введении покупок внутри веб-приложений из Chrome Web Store, установив комиссию всего лишь в 5% (за что удостоился овации от разработчиков), и в Angry Birds обещаны такие внутриигровые товары (например, Mighty Eagle).

Прогнозирую снижение производительности труда офисных работников вдвое.
И появление множества постов «вот теперь пора устраивать похороны флэша».

Update: у многих после 20-го уровня не загружался 21-й, но, как сообщается, это уже исправлено. Кроме того, у части макюзеров забавная проблема: игра работает во всех браузерах, кроме Хрома.
Total votes 245: ↑231 and ↓14+217
Comments163

Пишем простой плагин к веб-браузеру используя FireBreath

Reading time3 min
Views8.4K
Как уже писали ранее на Хабре, FireBreath — это фреймворк для разработки кросс-платформенных плагинов, используя технологии NPAPI [1] и ActiveX Control hosts, что позволит использовать плагин в следующих браузерах: Gecko/Firefox, Google Chrome, Apple Safari, Opera, Microsoft Internet Explorer 6, 7, and 8.

Мне пригодился этот фреймворк для следующего: в проекте (веб-приложение) использовался Java-апплет для печати Pdf-файлов напрямую на принтер, но из-за различных проблем с Java Policy и правами, не удалось добиться стабильной работы апплета + различные мелкие баги, как-то захват апплетом фокуса после загрузки или зависание браузера во время печати. Возможно, просто руки кривые. В общем, печать то работала, то нет, и это никого не устраивало.

Как вариант было решено попытаться написать плагин, который позволит избавиться от апплета и печатать файлы быстро и надежно. Собственно, печать осуществляет теперь тот же Java код, переписанный в виде jar файла. Однако прослойкой, которая осуществляет взаимодействие между джавой и клиентским кодом, является плагин браузера.

Теперь напишем простой «считай, ничего не делающий» плагин, который будет писать данные в файла в локальной файловой системе.
Читать дальше →
Total votes 57: ↑53 and ↓4+49
Comments4

Information

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