Читать дальше →
User
Несколько интересностей и полезностей для веб-разработчика (выпуск 7)
3 min
61KДоброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

Название говорит самое за себя. Данный ресурс — хранилище всевозможных хаков к существующим браузерам. Увидев этот сайт, сам Paul Irish мудро произнес: "Holy shit amazing".
Masonry — в переводе «каменная кладка» — идеальное решение для создания Grid Layout. Качественная «замена» для неутвержденной Flexbox спецификации. Простой синтаксис дает возможность без труда создавать Pinterest/Surfingbird подобные макеты. Существует на нативном JavaSciprt и как jQuery плагин.
Isotope — «изысканный jQuery плагин для магических лэйаутов. Позволяет с легкостью фильтровать, сортировать и придавать динамичность макету».
imagesLoaded.js — определяет когда изображения были загружены. Включает в себя 4 события: always, done, fail, progress. Простой в использовании.
Draggabilly — аналог jQuery UI Draggable на нативном JavaScript в лучших традициях автора кода. Работает с touch интерфейсом.
Close Pixelate — «пикселизация» изображений в Canvasаля потаённые места в некоторых работах жанра НЮ.
Browserhacks

Название говорит самое за себя. Данный ресурс — хранилище всевозможных хаков к существующим браузерам. Увидев этот сайт, сам Paul Irish мудро произнес: "Holy shit amazing".
5 замечательных изобретений от David DeSandro (Twitter, H5BP)

Isotope — «изысканный jQuery плагин для магических лэйаутов. Позволяет с легкостью фильтровать, сортировать и придавать динамичность макету».
imagesLoaded.js — определяет когда изображения были загружены. Включает в себя 4 события: always, done, fail, progress. Простой в использовании.
Draggabilly — аналог jQuery UI Draggable на нативном JavaScript в лучших традициях автора кода. Работает с touch интерфейсом.
Close Pixelate — «пикселизация» изображений в Canvas
+31
Бэкап большого количества мелких файлов
3 min
40KРано или поздно настройкой резервного копирования рабочих файлов озадачивается любой уважающий себя современный IT специалист. После ряда опечаток/ошибок программистов нашлось время для этого и у меня.
Специфика веб-приложения такова, что рабочий каталог занимает более 50ГБ на жестких дисках, включая в себя около 900 тысяч мелких файлов (картинки, превьюшки, ...). Поэтому в лоб решить задачу с помощью tar и аналогов не вышло. Да и хотелось бы иметь некоторую вариативность хранимых данных, а в случае с полным бэкапом реализация требовала больших затрат на хранение по сути одинаковых данных с небольшими изменениями. Плюс неплохо было бы дублировать копии на удаленном сервере бэкапов для снижения риска потери критической информации в результате краха железа. После скрупулезного анализа поисковых выдач и отбрасывания заведомо неподходящих мне методов, остановился на паре вариантов, навязываемых чаще всего в комментариях к самописным shell-велосипедам энтузиастов.
Специфика веб-приложения такова, что рабочий каталог занимает более 50ГБ на жестких дисках, включая в себя около 900 тысяч мелких файлов (картинки, превьюшки, ...). Поэтому в лоб решить задачу с помощью tar и аналогов не вышло. Да и хотелось бы иметь некоторую вариативность хранимых данных, а в случае с полным бэкапом реализация требовала больших затрат на хранение по сути одинаковых данных с небольшими изменениями. Плюс неплохо было бы дублировать копии на удаленном сервере бэкапов для снижения риска потери критической информации в результате краха железа. После скрупулезного анализа поисковых выдач и отбрасывания заведомо неподходящих мне методов, остановился на паре вариантов, навязываемых чаще всего в комментариях к самописным shell-велосипедам энтузиастов.
+30
Структура современной пиратской (варезной) сцены
10 min
57K
На сайте aboutthescene, который сегодня можно увидеть только в интернет-архиве, кроме истории сцены, которую я переводил в прошлый раз, содержалась также довольно подробная информация о современном на тот момент (2008г.) состоянии сцены, её иерархии и принципах работы. В этой статье я попытаюсь обобщить всю эту информацию вместе с комментариями людей, которые знают о состоянии дел сегодня. Конечно, здесь могут быть неточности или ошибки в терминологии или структуре, некоторые сведения могут показаться, наоборот, чересчур общеизвестными, но я постарался представить всю информацию в наиболее полном объёме, как она была на вышеупомянутом сайте.
Кроме описания самой сцены, которая и сегодня действует по сформировавшимся еще в начале принципам «сцена — только для сценеров» и «никакого бизнеса», статья также содержит информацию о «нежелательной деятельности», связанной с получением прибыли, которая неизбежно возникла в этом глобальном пиратском андеграунде.
+54
Избранное: ссылки по IT безопасности
3 min
110K
Давно хотел написать этот пост с подборкой полезных ссылок, так как очень часто спрашивают подобное (думаю, у многих, кто в этой (да и в других) сфере). Ссылки разбиты на категории.
+80
Переключения между провайдерами интернета на Debian 7
7 min
19KВ последних дистрибутивах Linux довольно много всяких полезных плюшек в папке /etc, однако мало кто ими грамотно пользуется. Здесь я расскажу про часть из них применительно к последней стабильной версии Debian, и приведу пример реализации переключения на резервный канал.
Все попытки найти банальную автопереключалку приводили к связке из 1-2 скриптов, написанным «под себя» и мало поддающимися настройке. К dhcp не был привязан ни один из них, а значит любые манипуляции на стороне провайдера требовали вмешательство в настройки. Сам писал такие в свое время, но вот теперь решил на новой системе оформить это красиво – так, как это задумывали разработчики Debian, а именно – меняем файлы конфигурации, добавляем свои скрипты и не трогаем те, что нам предоставила система.
Все попытки найти банальную автопереключалку приводили к связке из 1-2 скриптов, написанным «под себя» и мало поддающимися настройке. К dhcp не был привязан ни один из них, а значит любые манипуляции на стороне провайдера требовали вмешательство в настройки. Сам писал такие в свое время, но вот теперь решил на новой системе оформить это красиво – так, как это задумывали разработчики Debian, а именно – меняем файлы конфигурации, добавляем свои скрипты и не трогаем те, что нам предоставила система.
+19
Получаем тип и размеры изображения без скачивания его целиком, используя Python
2 min
17KВозникла задача профильтровать базу данных ссылок на изображения и удалить большие. В результате было найдено решение на Python, которым я поделюсь под хабракатом:


+41
Теория «Черного лебедя» и фундаментальная уязвимость автоматизированных систем
3 min
38KСуществует актуальная фундаментальная уязвимость в любой программном средстве написанном на компилируемых языках.
Автор теории Нассим Николас Талеб, описавший ее своей книге «Чёрный лебедь. Под знаком непредсказуемости». Теория рассматривает труднопрогнозируемые и редкие события, которые несут за собой значительные последствия. Процессы реального мира не возможно описать с точки зрение одной лишь математики, и в доказательство этому рассмотрим один простой пример.
Теория «Черного лебедя»
Автор теории Нассим Николас Талеб, описавший ее своей книге «Чёрный лебедь. Под знаком непредсказуемости». Теория рассматривает труднопрогнозируемые и редкие события, которые несут за собой значительные последствия. Процессы реального мира не возможно описать с точки зрение одной лишь математики, и в доказательство этому рассмотрим один простой пример.
+34
3G интернет в удаленности от базовой станции с помощью тарелки и кофейной банки
5 min
130KВсем жителям Хабра — привет!

Суть этой статьи показать еще один вариант словить за уши Э/М волну в относительной глубинке для нужд доступа в интернет.
Если где-то точно такая конструкция уже мелькала, милости прошу ссылку, будет интересно сравнить и пообщаться.
Материал изложу в повествовательной форме, надеюсь, никого этим сильно не замучаю, всякие термины, если кто не знает, и прочие подробности можно смело пропускать, от этого суть поста сильно не изменится.
Постановка задачи
Интернет – штука полезная и нужная, с этим, думаю, поспорить сложно. И если проблем в городе с интернетом нет, то в деревне, где мне часто приходиться по семейным обстоятельствам бывать, есть определенные проблемы. Есть частный деревянный дом а-ля «хата» (место действия: РБ), из интернета в моей окрестности доступ предоставляют 3 оператора, но максимум – это лишь технология EDGE. До двух ближайших базовых станций (БС) около 3.5 и 7 км. Между домом и БС лес, но не вплотную. Хватило бы и EDGE, но загрузка этих станций от других соседних деревень, судя по скорости, такая, что можно «прятаться в картошку».
Вариант покупать готовое решение отпал сразу из соображений спортивного интереса.
Вдохновившись на одном из форумов удачным опытом парней, где использовалась спутниковая тарелка (она же «офсетная зеркальная антенна») и сам 3G модем в фокусе, решил что-то подобное смоделировать да скрутить.
Сразу скажу, что антенну с модемом хотелось закинуть на чердак, дабы не портила внешний вид дома (об этом ниже).
+180
Язык программирования и база данных Q: в энтерпрайсе синтаксис роли не играет
7 min
8.3KTutorial
Возникла необходимость выбрать новый тарифный план для сотового. Провозившить минут 30 с excel и google-docs стало понятно, что ничего толкового из этого не выйдет и без db тут не обойтись.
Чуть подумав рука сама набрала «q», так как это было единственное доступное на компьютере здесь и сейчас. Что про него знал: что первый и последний раз запускал год назад, минут на 30, для простой задачки по разбору и поиску по файлу.
Дальше будет много q, а именно ascii последователя подмножества языков APL'а и языка Scheme, а именно k и его расширения k-sql, переродившихся в продукт с именем Q — тесной связке языка и встроенной в него базы данных.
Чуть подумав рука сама набрала «q», так как это было единственное доступное на компьютере здесь и сейчас. Что про него знал: что первый и последний раз запускал год назад, минут на 30, для простой задачки по разбору и поиску по файлу.
Дальше будет много q, а именно ascii последователя подмножества языков APL'а и языка Scheme, а именно k и его расширения k-sql, переродившихся в продукт с именем Q — тесной связке языка и встроенной в него базы данных.
C:\Users\unknown\Dropbox\j>q
KDB+ 3.0 2013.02.06 Copyright (C) 1993-2013 Kx Systems
w32/ 2()core 2972MB unknown win-d2om7les24v 192.168.1.2 PLAY 2013.05.07
+12
FindBugs против CDK
4 min
15KМне всегда интересно читать посты от PVS-Studio о том, как они ищут баги в каком-нибудь опенсорсном проекте. Я решил, что я тоже смогу написать такой пост, только про Java. Существует совершенно замечательный бесплатный статический анализатор Java-кода FindBugs. О нём на удивление мало писали на Хабре.
Помимо анализатора кода для такой статьи требуется подопытный кролик. Нужен довольно большой проект, но при этом не настолько распространённый, чтобы разработчики идеально вылизывали код. Я выбрал проект Chemistry Development Kit (версия 1.4.19), которым доводилось пользоваться. FindBugs я установил как плагин к Eclipse, потому что мне так привычнее.

Помимо анализатора кода для такой статьи требуется подопытный кролик. Нужен довольно большой проект, но при этом не настолько распространённый, чтобы разработчики идеально вылизывали код. Я выбрал проект Chemistry Development Kit (версия 1.4.19), которым доводилось пользоваться. FindBugs я установил как плагин к Eclipse, потому что мне так привычнее.

+61
Делаем Refal на Prolog. Магия в семь строк
5 min
13KЕсли распознающая машина на рисунок слона отзывается сигналом «мура», на изображения верблюда — тоже «мура» и на портрет видного ученого — опять-таки «мура», это не обязательно означает, что она неисправна. Она может быть просто философски настроена.
Владимир Савченко, «Открытие себя»
1. Полюбите Рефал. Немедленно!
Всем известно, что есть такой язык программирования — Рефал. Рефал разработан в 1966 году нашим соотечественником Валентином Турчиным. Судьба у Рефала сложная, но язык до сих пор жив и развивается. Для интересующихся приведем несколько ссылок:
- Самостоятельное изучение Рефала-5. Взгляд студента
- Журнал «Практика функционального программирования», выпуск №7(светлая ему память!). Статьи «Язык РЕФАЛ — взгляд со стороны» и «Суперкомпиляция: идеи и методы»
Сильно утрируя, можно сказать, что Рефал — это смесь Лиспа и Пролога. В синтаксисе языка есть одна интересная особенность — сопоставление с образцом т.н. «прямым выводом».
+10
Несколько интересностей и полезностей для веб-разработчика (выпуск 6)
3 min
29KДоброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.
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"],
});
+40
Пишем Hello World на ассемблере под Windows RT с использованием winapi
2 min
28KTutorial
Однажды, совсем недавно, на планшетах с Windows Microsoft потеряла миллионы долларов. Ну а мы сегодня просто будем писать под них на ассемблере.

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

Нам понадобятся следующие вещи.
- Установленная Microsoft Visual Studio с поддержкой ARM ассемблера, например 2012.
- Jailbreak'нутый планшет с установленной Windows RT, например Microsoft Surface RT.
Для начала создадим отдельную папку для проекта, в которой создадим файл arm.asm, содержимое которого под катом.
+32
Визуализация двумерного гауссиана на плоскости
4 min
29K
+42
Qt Meta System over Network. Часть 2 — сигналы и слоты
7 min
8.8KTutorial

Часть 1 — Свойства
Продолжаем разбираться с метасистемой Qt. В этот раз рассмотрим создание виртуальных сигналов и слотов.
+20
Делаем свой персональный Skype, пошаговая инструкция создания WebRTC приложения
4 min
139K
WebRTC позволяет реализовать real-time аудио/видео связь через браузер (


В этом топике я расскажу как реализовать простейшее WebRTC приложение.
+94
Как выбрать фичи для вашего приложения: используем модель Кано
5 min
25KИтак, вы задумали делать продукт. Не проект, а именно продукт, который через Х месяцев должен появиться в сторах и начать свое движение к звездам. Вы уверены в своих силах и знаниях, а количество новых идей, которые могут превратиться в настоящие киллер-фичи, просто зашкаливает. Самое время сказать себе “стоп!” и разобраться в том, что должно войти в комплект вашей самой первой релизной версии.
После того как вы расписали все характеристики будущего продукта, необходимо определить приоритеты в разработке. Первое желание – ранжировать по сложности реализации. Логично, тем более если ресурс ограничен – нет смысла строить “Титаник”, когда для первого преодоления Рубикона нужна просто шустрая и устойчивая лодка. Следуя заветам customer development, вы в будущем будете только наращивать функционал: главное – в архитектуре не промахнуться.
Итак, делаем шуструю лодку. Но выбор все еще непрост – даже из относительно простых деталей нужно определить тот набор, который и станет вашим release candidate. И здесь вам на помощь придет модель, которую придумал в 70-е годы прошлого века японский ученый Нориаки Кано. На “Хабре” уже был текст об использовании его модели для решения задач UX. Этот подход вполне применим и к продуктовым функциям – ведь они тоже отвечают за эмоциональные реакции потребителей. Кано предположил, что таких реакций бывает пять типов: от полной неприязни до прямо-таки восхищения. Эти типы японец изложил на одном графике, где по вертикальной оси отобразил эмоциональную реакцию пользователя (неприязнь – восхищение), а по горизонтальной – “количественное” значение характеристики (нет – много).

После того как вы расписали все характеристики будущего продукта, необходимо определить приоритеты в разработке. Первое желание – ранжировать по сложности реализации. Логично, тем более если ресурс ограничен – нет смысла строить “Титаник”, когда для первого преодоления Рубикона нужна просто шустрая и устойчивая лодка. Следуя заветам customer development, вы в будущем будете только наращивать функционал: главное – в архитектуре не промахнуться.
Итак, делаем шуструю лодку. Но выбор все еще непрост – даже из относительно простых деталей нужно определить тот набор, который и станет вашим release candidate. И здесь вам на помощь придет модель, которую придумал в 70-е годы прошлого века японский ученый Нориаки Кано. На “Хабре” уже был текст об использовании его модели для решения задач UX. Этот подход вполне применим и к продуктовым функциям – ведь они тоже отвечают за эмоциональные реакции потребителей. Кано предположил, что таких реакций бывает пять типов: от полной неприязни до прямо-таки восхищения. Эти типы японец изложил на одном графике, где по вертикальной оси отобразил эмоциональную реакцию пользователя (неприязнь – восхищение), а по горизонтальной – “количественное” значение характеристики (нет – много).

+32
fullscreen vs window
2 min
5.3KЯ практически всегда работаю с одной программой одновременно. Это может быть любая программа: текстовый редактор, файловый менеджер, почтовый клиент, аська, mp3 плеер, командная строка, браузер, etc. Наиболее комфортно работать с этой программой когда во-первых ничего не отвлекает, и во-вторых под неё отведен максимум экранного пространства.
Из этих предпосылок естественным путём приходим к работе в режиме «fullscreen»: каждая программа распахнута на полный экран. А для удобства переключения между программами каждая программа запускается на своём виртуальном desktop-е, между которыми можно переключаться по горячим кнопкам Alt+Fx (как текстовые консольки в линухе).
Из этих предпосылок естественным путём приходим к работе в режиме «fullscreen»: каждая программа распахнута на полный экран. А для удобства переключения между программами каждая программа запускается на своём виртуальном desktop-е, между которыми можно переключаться по горячим кнопкам Alt+Fx (как текстовые консольки в линухе).
+30
Десятка лучших консольных команд
2 min
198K
+310
Information
- Rating
- 3,828-th
- Location
- Кызыл, Тува (Тувинская Респ.), Россия
- Registered
- Activity
Specialization
Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker