Search
Write a publication
Pull to refresh
2
0
Садовников Антон Петрович @Siddthartha

Developer

Send message

Опыт блогстарта

Reading time6 min
Views738
Эта статья — вторая в серии из трёх статей о становлении блога. Она основывается на моём личном опыте и на примере моего проекта. Все советы, приведённые ниже — результат моих собственных опытов. Думаю, это может быть полезным для тех, кто только собирается заиметь «стэндалон». А те, чей опыт схож с моим, могут дополнить и поправить то, что я написал, на благо новых блоггеров.

nude2



Стойким товарищам я советую начать с выбора домена и поиска хостинга. Если ты планируешь немного повременить, и не становиться «звездой блогинга» в первые десять дней практики, смело бери пакет «стартер». Его наполнение везде разнится, но несущественно. Php 4.1, MySQL-база, три-четыре гигабайта трафика и контрольная панель — есть почти у всех. Сразу после оглушительного успеха, докупишь места и трафика.

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

Симуляция океана на WebGL

Reading time1 min
Views51K
image

Небольшое красивое демо, выложенное Дэвидом Ли — посмотреть (обсуждение).



Большая часть «магии» сделана при помощи шейдеров GLSL на GPU, код на JavaScript с матрицами — необходимая заготовка для работы с 3D графикой. Алгоритм движения волн основан на методе, описанном Джерри Тессендорфом в статье «Симуляция волн океана», опубликованной на SIGGRAPH 2002 (по ссылке есть исходный код, который написан на С++); по теме можно почитать вот это.
Читать дальше →

Практическое применение LD_PRELOAD или замещение функций в Linux

Reading time4 min
Views44K
Всем привет!
В 2010 году, shoumikhin написал замечательную статью Перенаправление функций в разделяемых ELF-библиотеках. Та статья очень грамотно написана, полная, но она описывает более харкордный способ замещения функций. В этой статье, мы будем использовать стандартную возможность динамического линкера — переменную окружения LD_PRELOAD, которая может загрузить вашу библиотеку до загрузки остальных.

Как это работает?

Да очень просто — линкер загружает вашу библиотеку с вашими «стандартными» функциями первой, а кто первый — того и тапки. А вы из своей библиотеки можете загрузить уже реальную, и «проксировать» вызовы, попутно делая что вам угодно.

Реальный Use-Case #1: Блокируем mimeinfo.cache в Opera


Мне очень нравится браузер Opera. А еще я использую KDE. Opera не очень уважает приоритеты приложений KDE, и, зачастую, так и норовит открыть скачанный ZIP-архив в mcomix, PDF в imgur-uploader, в общем, вы уловили суть. Однако, если ей запретить читать файл mimeinfo.cache, то она все будет открывать через «kioclient exec», а он-то уж лучше знает, в чем я хочу открыть тот или иной файл.

Чем может приложение открывать файл? На ум приходят две функции: fopen и open. В моем случае, opera использовала 64-битный аналог fopen — fopen64. Определить это можно, воспользовавшись утилитой ltrace, или просто посмотрев таблицу импорта утилитой objdump.
Читать дальше →

Работа с cURL на android

Reading time6 min
Views23K

Зачем это нужно


Мы хотим общение с API сервером написать на C++, а дальше использовать написанную библиотеку во всех наших приложения под различными платформами. Конечно мы хотим, чтобы работало под android.

Libcurl — это библиотека интерфейса API для передачи, которую разработчики могут встроить в свои программы; cURL действует как автономная обёртка для библиотеки libcurl. libcurl используется, чтобы обеспечить возможность передачи файлов (адресуемых с помощью URL) многочисленным приложениям (как открытым, так и коммерческим). (wikipedia)

Для iOS можно скачать готовый пример подключения и использования cURL с сайта разработчика. И с iOS всё просто.

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

И вообще говоря под android заставить работать cURL оказалось немного сложнее чем хотелось бы.
Под катом сама статья и работающий исходник

Маленький британский шпион – закладка на Raspberry Pi

Reading time9 min
Views97K
Большой темой майского номера «Хакера» стал Raspberry Pi. Мы пообщались с создателем «малинки», Эбеном Аптоном и узнали, каковы итоги первого года проекта, и что ждет маленький компьютер в следующем. Также мы описали два концепта на основе Raspberry: незаметную закладку, которая в виду размеров может незаметно собирать данные из сети (принимая команды по SMS и скидывая логи в Evernote), а также систему видеонаблюдения, интегрированную с Google Drive. Один из этих концептов мы предлагаем вашему вниманию.




Идея дропбокса проста: если миниатюрный компьютер снабдить батареей и 3G-модемом, то можно получить шпионскую коробочку, которая незаметно подключается к исследуемой сети и передает собранные данные. Этот концепт вполне реализуем на Raspberry Pi.

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

Скачиваем Youtube плейлист в формате mp3 одним bash-скриптом

Reading time2 min
Views35K
Так сложилось, что в данный момент мой рабочий ноутбук оснащен лишь 2GB оперативной памяти. В связи с этим возникла необходимость оптимизации браузера, т.к. при большом количестве открытых вкладок памяти становится недостаточно и используется swap-раздел, что ведет к тормозам.

В работе мне помогает музыка, обычно это открытый таб с плейлистом Youtube. Так вот этот таб в просессе работы съедает до 500MB (!) и даже больше (Google Chrome).

Такое положение дел вынудило написать bash-скрипт, который на входе получает ID плейлиста, на выходе – mp3 файлы, которые можно слушать в любимом плеере, например, в MOC:
MOC
Читать дальше →

Hyperboria: Как все устроено

Reading time4 min
Views66K


В прошлой статье был общий обзор сети Hyperboria, в этой мы рассмотрим её структуру, какие она решает проблемы и её прямое назначение — Mesh сеть между wi-fi устройствами.
Читать дальше →

Оптимизируем Boid'ов на Unity

Reading time9 min
Views21K


Знаете ли вы, что кузнечики, будучи брошенными в ведёрко, начинают маршировать по кругу как на картинке выше? Правда сверху не кузнечики, а Boids — модель коллективного поведения птичек, пчёлок, рыбок и другой живности. Несмотря на простоту модели, она демонстрирует эмерджентные свойства: боиды собираются в кучу, летают стаями по кругу, нападают на людей.

Это вторая часть статьи, посвящённая различным хитростям оптимизации Unity и C#, которые увеличивают производительность алгоритма из первой части в пару десятков раз.
Хитрости под катом

Воксельная графика своими руками — первые шаги

Reading time5 min
Views25K

Знакомство с воксельной графикой


В процессе поиска алгоритмов расчета коллизий на сайте GameDev, я наткнулся на маленькую статью про движок idTech 6 и заинтересовался воксельной графикой, которую противопоставляют полигональной графике, на которой сейчас основана почти вся компьютерная графика.
Вообще, воксел расшифровывается как "объемный пиксель", однако сейчас под вокселом в основном понимается некий примитив, чаще всего куб или прямоугольный параллелепипед, который имеет определенный размер и цвет. В idTech 6 и в движке Кена Сильвермана Voxlap они хранятся в разреженном октодереве (SVO — sparse voxel octree), что позволяет экономить память и делает возможным простую реализацию "уровня детализации".


Снеговик из вокселей

Иными словами, вокселы — это такой конструктор LEGO, где из одинаковых деталек разного размера (а также, соеденяя маленькие детальки в большие) можно реализовать самые разнообразные модели, фигуры и т.д.
Одно из самых больших преимуществ вокселей относительно полигонов, то, что их можно разрушать — программа точно знает, что если воксел частично разрушен, то его можно поделить на более мелкие вокселы, которые будут из того же материала, что и их родитель.
Разрушения в тестовой игре на движке Voxlap


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

Pinboard — прокачиваем Pinba для мониторинга PHP

Reading time2 min
Views30K
Intaro PinboardСуществует полезный и нужный инструмент для мониторинга PHP под названием pinba. Он позволяет собирать статистику по выполнению PHP-скриптов вашего проекта. Мы реализовали небольшую систему, которая дополняет Pinba, и назвали ее Pinboard (Pinba board).

Суть работы


Pinba хранит исключительно realtime-данные за последние несколько минут, что очень круто, но не всегда удобно. Pinboard же периодически агрегирует эти данные в собственное хранилище и предоставляет простые средства просмотра и анализа этой информации, а в ближайшем будущем и средства простейшего мониторинга.
Читать дальше →

Прощай, Zen Coding. Привет, Emmet!

Reading time5 min
Views251K

Еще в 2009 году, image Сергей Чикуёнок опубликовал статью, в которой представил новый способ написания HTML и CSS кода. Этот революционный плагин, назывался Zen Coding, он помогал многим разработчикам на протяжении многих лет и в настоящее время вышлел на новый уровень.

Emmet, ранее известный как Zen Coding, является самым производительным и экономным во времени плагином для текстового редактора. Простые сокращения мгновенно расширяются в сложные фрагменты кода, Emmet превратит вас в более продуктивного разработчика.

Для тех, кто предпочитает смотреть, а не читать, вот видео любимых трюков автора.

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

Использование драйверов из Android приложения

Reading time7 min
Views46K
Рут даёт практически абсолютную власть над Android устройством. Сегодня я расскажу вам как получить еще больше имея склонность к программированию и желание исследовать систему на своём устройстве. Кто заинтересовался — прошу под кат.
Читать дальше →

Пишем свой bootloader

Reading time12 min
Views67K
Это статья была написана для людей, которым всегда интересно знать как работают разные вещи. Для тех разработчиков которые обычно пишут свои программы на высоком уровне, C, C++ или Java — не важно, но при этом столкнулись с необходимостью сделать что-то на низком уровне. Мы будем рассматривать низкоуровневое программирование на примере работы bootloader-а.

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


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

Использование событий в jQuery плагинах

Reading time5 min
Views8.5K
Основной целью данной статьи является: показать различия между традиционной реализацией jQuery плагина и реализацией с применением событий. В статье будет: о традиционной реализации jQuery плагина, о работе с событиями в jQuery, и попытка заменить методы или callback-функции плагина событиями.

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

Публикация видео на канале пользователя YouTube

Reading time5 min
Views6.2K
Разрабатывая приложение под Android для создания слайд-шоу из фотографий, столкнулся с задачей публиковать готовые ролики на личном канале пользователя YouTube.
Пришлось повозиться, т.к. во-первых, применяем облачные вычисления и обработка данных может занимать дольше времени, чем действует token. А во-вторых, чтобы реализовать функцию, пришлось столкнуться с некоторыми неточностями и вопросами в мануале Google. Подробности под катом.

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

Фабрика виджетов jQuery UI

Reading time9 min
Views57K
Все jQuery UI виджеты создаются на простой основе — Фабрике Виджетов. Она обеспечивает гибкую основу для создания сложных, структурированных плагинов с совместимым API. С её помощью можно создавать не только плагины jQuery UI, но и любые объектно-ориентированные компоненты, не изобретая велосипедов. Она не зависит от других компонентов jQuery UI, наоборот, большая часть компонентов UI зависит от неё.

Что это?


Фабрика виджетов это метод глобального объекта jQuery —
jQuery.widget

Edit-in-place на компонентах Bootstrap

Reading time1 min
Views22K
Привет, Хабр!
В этой статье я коротко расскажу о библиотеке Editable for Bootstrap, позволяющей вводить данные на страницу методом edit-in-place и основанной на компонентах Bootstrap. Я использую ее в админ-части проектов, либо когда нужно оперативно сделать интерфейс с возможностью пользовательского ввода.
Подробности под катом.
Читать дальше →

Подборка инструментов для фронт-энд разработки

Reading time2 min
Views134K
Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.

Картинки кликабельны.

Form builder


Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
image
Читать дальше →

Генетический алгоритм для генерации лиц

Reading time1 min
Views8.4K
Что будет, если генератор случайных фигур соединить с детектором лиц? Способен ли эволюционный алгоритм путём случайных мутаций сгенерировать человеческое лицо? Разработчик программы Pareidoloop отвечает на этот вопрос утвердительно (генератор протестирован только в Chrome 21).


(с) spiritedflow
Читать дальше →

Information

Rating
Does not participate
Location
Луганск, Луганская обл., Украина
Date of birth
Registered
Activity

Specialization

Specialist
Lead
From 10,800 $
PHP
OOP
Docker
Rust
Linux
Asynchronous programming
MQTT
Geoinformation systems
Machine learning
Computer Science