Pull to refresh
3
0
Илья Наумов @Joo

User

Send message

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 4a из 6

Reading time7 min
Views87K

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Построение перспективного искажения


Четвёртая статья будет разбита на две, первая часть говорит про построение перспективного искажения, вторая про то, как двигать камеру и что из этого следует. Задача на сегодня — научиться генерировать вот такие картинки:



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

Параллельные вычисления, класс-обёртка для pcntl_fork()

Reading time3 min
Views7.2K
Хочу показать свой базовый класс, который я использую для PHP скриптов.
Приемущество его в том, что легко можно «распараллелить» работу.
Используется pcntl_fork() со всеми «вытекающими».

(тестировалось только на линукс)
Читать дальше →

VNC-рулетка. Srsly?

Reading time1 min
Views65K
image

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

srsly.de — VNC-рулетка. Обновляйте страницу, получайте каждый раз новый сервер со скриншотом. Можете подключаться к нему через веб-клиент или через обычный VNC, ставить лайки, репортить или даже добавлять свои VNC-серверы в базу!

Для сканирования использовался zmap, который сканировал порты 5900-5910, затем python-скрипт пытался подключиться к серверу и снять скриншот. Веб-часть написана на Go.

Развлекайтесь.
Hacker News

PHP класс для удобной и безопасной работы с MySQL

Reading time9 min
Views117K
После написания статьи про защиту от инъекций я взялся за написание класса, реализующего изложенные в ней идеи.
А точнее, поскольку ключевой функционал уже использовался в рамках рабочего фремворка, я занялся выделением его в самостоятельный класс. Пользуясь случаем, хочу поблагодарить участников PHPClub-а за помощь в исправлении нескольких критических ошибок и полезные замечания. Ниже я постараюсь описать основные особенности, но сначала небольшой
дисклеймер
Есть несколько способов работы с SQL — можно использовать квери-билдер, можно ORM, можно работать с чистым SQL. Я избрал последний вариант, потому что мне он ближе. Я совсем не считаю первые два плохими. Просто лично мне всегда было тесно в их рамках. Но я ни в коем случае не утверждаю, что мой вариант лучше. Это просто ещё один вариант. Который можно использовать, в том числе, и при написании ORM-а. В любом случае, я считаю, что наличие безопасного способа работать с чистым SQL не может принести какой-либо вред. Но при этом, возможно, поможет последним оставшимся приверженцам использования mysql_* в коде приложения, отказаться, наконец, от этой порочной практики.

В двух словах, класс строится вокруг набора функций-хелперов, позволяющих выполнять большинство операций с БД в одну строку, обеспечивая при этом (в отличие от стандартных API) полную защиту от SQL инъекций, реализованную с помощью расширенного набора плейсхолдеров, защищающих любые типы данных, которые могут попадать запрос.
В основу класса положены три базовых принципа:
  1. 100% защита от SQL инъекций
  2. При этом защита очень удобная в применении, делающая код короче, а не длиннее
  3. Универсальность, портабельность и простота освоения

Остановлюсь чуть подробнее на каждом из пунктов.
Читать дальше →

Решение задачи коммивояжера с помощью метода ветвей и границ

Reading time3 min
Views99K
Здравствуй, Хабр! Реализовывая различные алгоритмы для нахождения гамильтонова цикла с наименьшей стоимостью, я наткнулся на публикацию, предлагающую свой вариант. Попробовав в деле, я получил неправильный ответ:



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

Под катом вас будет ждать исправленный алгоритм и онлайн-калькулятор.
Читать дальше →

«Программирование мышкой» в Swift ч.2 — навигация

Reading time8 min
Views22K
И снова привет, хабаровчане!

Развивая тему предыдущей статьи, пишу о программировании навигации между окнами вашего приложения с использованием минимума кода. Сразу хочу упомянуть, статья пишется для новичков, если вы в этом деле опытный разработчик — вряд ли она что-то вам даст.

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

Календарные типы данных в MySQL: особенности использования

Reading time6 min
Views82K
В MySQL 5 есть несколько типов данных для хранения даты и времени. Это TIMESTAMP, DATE, DATETIME, TIME и YEAR. Все они обладают своими особенностями, и выбор в пользу того или иного календарного типа должен производиться отдельно в каждой конкретной ситуации. Я хотел бы поделиться с вами результатом моего сегодняшнего миниисследования этих типов, в том числе в аспекте работы с временными зонами.


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

Многоликие функции Swift

Reading time16 min
Views43K
Русский перевод очень полезной статьи Natasha Murashev The Many Faces of Swift Functions.

Хотя у Objective-C синтаксис выглядит несколько странно, по сравнению с другими языками программирования, синтаксис метода — прост и понятен. Вот небольшой экскурс в прошлое:

+ (void)mySimpleMethod
{
    // метод "класса"
    // нет параметров
    // нет возвращаемых значений
}

- (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(NSNumber *)param2
{
    // метод "экземпляра"
    // первый параметр - типа NSString указатель, 
    // второй параметр  - типа NSNumber указатель
    // должен вернуть значение типа NSString указатель
    return @"hello, world!";
}


В противоположность этому, синтаксис Swift выглядит в большинстве случаев также, как и в других языках программирования, но временами он может быть более сложным и запутанным, чем в Objective-C.

Прежде чем я продолжу, я хочу прояснить разницу между «методами» и «функциями» в Swift, так как я повсеместно буду использовать оба этих термина в этой статье. Вот определение «методов», данное в книге Apple «Swift Programming Language»:

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

Хранение деревьев в базе данных. Часть первая, теоретическая

Reading time4 min
Views131K
Полгода назад написал бандл ClosureTable для фреймворка Laravel 3. Поводом для написания стала вот эта замечательная презентация Билла Карвина о способах хранения и обработки иерархических данных в MySQL с использованием PHP.

Итак. Существует несколько шаблонов проектирования баз данных для хранения и обработки иерархических структур:
  • Adjacency List («список смежности»)
  • Materialized Path («материализованный путь»)
  • Nested Sets («вложенные множества»)
  • Closure Table («таблица связей»)

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

Реактивное программирование на Swift

Reading time1 min
Views17K
В конце октября в Москве прошла наша первая конференция мобильных разработчиков #MBLTDev. 17 докладчиков из Англии, Германии, Голландии, Дании, России и США пришло послушать более 300 человек.

Мы будем постепенно выкладывать записи докладов с презентациями и начнем с доклада канадского блоггера Эша Фюрроу «Реактивное программирование на Swift». Помимо ведения блога, Эш является iOS-разработчиком онлайн галереи Artsy и автором нескольких книг про iOS-разработку.


Презентация

В своем докладе Эш познакомил аудиторию с основами фреймворка ReactiveCocoa, проиллюстрировав их примерами на Swift. Также, он рассказал о приложении, над которым он в данное время работает в Artsy с использованием этих инструментов. Приложение, что примечательно, с открытым исходным кодом и доступно на GitHub.
Читать дальше →

Pirate Bay начал продвигать новый бесплатный VPN

Reading time2 min
Views138K
Последние несколько дней на главной странице «Пиратской бухты» вместо их собственного лого висит промо нового бесплатного VPN — FrootVPN. На странице проекта написано, что сервис базируется в Швеции и находится под защитой шведских законов, предоставляет свои услуги бесплатно, используя несколько 10-гигабитных каналов и не ведёт никаких логов.


Что мы знаем о тех, кто разместил эту ссылку, кроме удивительной толерантности к jpg-артефактам на логотипах?
Читать дальше →

Каково быть ИП? Выводы после года работы

Reading time2 min
Views63K
Снова, привет!

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

Год назад я уволился из хорошей it-компании, проработав там 5 лет. Причины приводить не буду, чтобы не отвлекаться от темы. И оформив ИП, стал индивидуальным разработчиком (специально не говорю «фрилансер», т.к. не люблю это слово). За этот год я успел сделать некоторые выводы и сейчас делюсь ими с тобой (уточню, что буду вести речь исключительно об удаленной работе):
Читать дальше →

Жизнь разработчика (в картинках)

Reading time1 min
Views66K
Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

Когда я показываю босу, что окончательно пофиксил баг



Когда проджект-менеджер входит в офис



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

Переезд IT-шника в Германию: от А до Я

Reading time20 min
Views99K
Привет.

Germany Blue CardВ этом посте я хочу подробно рассказать о моём опыте переезда на работу PHP-разработчиком в Германию — от момента, когда есть просто желание переехать, но не знаешь что и как делать, до момента, когда уже переехал, вселился в квартиру и получил вид на жительство. Кроме того, в конце поста я приведу немного полезной информации и ссылок по переезду в некоторые другие страны.

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

Итак, если вы имеете IT-шное образование и вам интересна идея сваливания из печальной пост-совковой реальности, прошу под кат.
Читать дальше →

Есть ли жизнь с телефоном за <1000 рублей?

Reading time2 min
Views1.4K
Привет.

Что-то давно не видно хороших обзоров, а я так мечтал попробовать себя в роли автора одного из них) За мою недолгую жизнь у меня было около десятка телефонов. Дорогие и как вы узнаете из этого обзора дешевые. Знакомьтесь Philips Xenium:

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

Поднять уровень английского легко!

Reading time1 min
Views15K
Чувак отлично рассказывает и подробно показывает.
Например, за 1 минуту можно выучить 50 тысяч английских слов, не верите?

В русском языке существует около 50 тысяч слов оканчивающихся на «ция» и «сия».
Так вот, почти все слова оканчивающиеся на «ция» имею окончание tion, а на «сия» — sion.
Т.е. из слова вы подставляется все до окончания «ция», «сия».
Модернизация — Modernization
Делегация — Delegation
Корпорация — Corporation
Абстракция — Abstraction
Профессия — Profession

1 урок


Остальные 3 видео доступны в плейлисте или на странице пользователя DjonikNSK
torrent: rutracker.org/forum/viewtopic.php?t=3904361

Опыт составления резюме

Reading time5 min
Views33K

Проблема


Не так давно мне потребовалось обновить своё резюме. Последний раз я это делал несколько лет назад, так что решил написать резюме с нуля.

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

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

Поддержка интерактивных нотификаций iOS 8 в приложении

Reading time3 min
Views10K
Одним из нововведений iOS 8 являются интерактивные нотификации. Таким нотификациям можно назначить до четырех действий, каждое из которых будет представлено отдельной кнопкой внизу баннера с текстом нотификации. Таким образом, у пользователя появляются дополнительные возможности отреагировать на сообщения без активации (обычно) приложения. Рассмотрим, как добавить поддержку подобного функционала.
Читать дальше →

Кортежи в Swift

Reading time7 min
Views32K
В поиске информации о работе с Кортежами (Tuples) в Swift работая над своим приложением, я решил, что будет лучше объединить в одну статью всю информацию, которую я изучил или нашел, чтобы ее можно было легко использовать.

Кортежи в основном являются значением, которое может содержать несколько других значений. Составной тип может содержать также “именованные типы”, которые включают в себя классы, структуры и перечисления (также протоколы, но так как они не хранят значения непосредственно, я знал, что должен упомянуть их отдельно), а также другие составные типы. Это означает, что кортеж может содержать другие кортежи. Другой составной тип, который может содержать кортеж, является “функциональным типом”, который различным способом ссылаться на тип. Он описывает замыкания в частности стиля типа “() >() ”, чьи функции и методы соответствуют ему. Также функциональный тип может содержать другие составные типы, как кортеж, и замыкания, про которые Вы читали в моем предыдущем посте "Замыкание и Определение в Swift".
Читать дальше →

Алгоритм решения задачи о рюкзаке ( версия 2, исправленная)

Reading time5 min
Views135K
Ниже приведен алгоритм точного решения целочисленной задачи о рюкзаке. Предлагаемый алгоритм требует меньше вычислительных ресурсов и возможно несколько проще алгоритма динамического программирования (ДП).

Причина побудившая автора к публикации


Первая версия описания алгоритма было послана мною в институт математики им. С. Л. Соболева Сибирского отделения РАН, откуда был прислан ответ что указанный алгоритм известен давно. Цитирую:
Одно из его первых упоминаний в книге Кереллера Nemhauser, Ullman, Discrete dynamic programming and capital allocation, Management Science, 15 p. 494-505, 1969.
Тем не менее я решил ознакомить сообщество с алгоритмом, т.к. в известных мне учебниках по дискретной математике я его не обнаружил (возможно плохо искал). В первой версии алгоритма была ошибка, указанная мне пользователем wataru. За это ему большое спасибо. Я постарался эту ошибку устранить. До алгоритма я дошел самостоятельно, так что надеюсь ничьих прав не нарушаю. Возможно кому нибудь описание будет интересно и пригодится.
Читать дальше →

Information

Rating
Does not participate
Location
Казахстан
Date of birth
Registered
Activity