Search
Write a publication
Pull to refresh
201
0
Владимир Пузанов @farcaller

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

Send message

Перенос данных из одной базы в любую другую

Reading time2 min
Views14K
В нашем Ruby On Rails 3 приложении возникла необходимость перейти с Sqlite на MySQL. Нужен было простой и действенный способ, без громоздких Perl скриптов и платных утилит, которыми пестрит интернет и в частности StackOverflow.
Читать дальше →

А MVC ли это?

Reading time6 min
Views25K
Добрый день!

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

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

Пайпы, the pythonic way

Reading time3 min
Views19K
Одни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ля
xs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то так
result = [x for x in range(100)] \
    | where(lambda x: x % 3 == 1)) \
    | sum \
    | my_function

Не в Питоне?
Зря так думаете...

Iconizer.net — перерождение бесплатного генератора иконок

Reading time2 min
Views1.7K

Первое что мы сделали это начали изучать лучшие проекты в этой индустрии. Нормальных генераторов мы не нашли, но зато нашли очень многое в поисковиках иконок. Собрав самое лучшее, и улучшив на что хватило фантазии, мы создали довольно неслабый поисковик с огромной базой. Мы собрали свыше 50 000 уникальных иконок (под словом «уникальный» имеется ввиду реальная уникальность, а не 5 000 иконок 10 размеров каждая).
Подробности под катом

«Съешь меня»… нет, не так… «Выполни меня»!

Reading time15 min
Views2.9K
У меня периодические возникают разные потребности решения мелких насущных задач в Mac OS X. Для этих целей я обычно делаю небольшие программы, которые «закрывают» потребность частным образом. Но иногда хочется, чтоб программа была универсальной, и ей могли воспользоваться другие люди при необходимости (например «Переlator»). Так получилось и в этот раз…

Я люблю, когда Dock отображается всегда на экране. Но при запуске Симулятора iOS постоянно приходилось включать автоматические скрытие, чтобы симулятор полностью умещался на экране. Появилась задача — автоматизировать этот процесс. За пару дней набросал универсальную программу, с помощью которой можно задать AppleScript на определённое действие любой программы: «Программа запущена», «Программа завершена», «Программа активирована», «Программа деактивирована» и пр.



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

Веселые шрифты в своем приложении

Reading time2 min
Views5.1K
Игровые приложения для детей и взрослых скучны без веселых букв и цифр.
Строгий iPhone кодекс не давал разработчику до версии iOS 3.2 стандартных способов использовать свои шрифты в приложениях.
Все спасались нарисованными в редакторе картинками цифр и букв или чужими библиотеками.

image

Как теперь обстоит дело с custom fonts для разработчиков iPhone поделок?
Осторожно! Под хабракатом 1 картинка, 1 анекдот сомнение и 2 фрагмента кода.

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

Запускаем сторонний код в песочнице

Reading time8 min
Views5.9K
Как гласит статья из Википедии, Песочница — механизм для безопасного исполнения программ. Песочницы часто используют для запуска непротестированного кода, непроверенного кода из неизвестных источников, а также для запуска и обнаружения вирусов.

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

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

Files Over Miles: P2P через браузер

Reading time1 min
Views7.8K

Постоянно сталкиваюсь с проблемой передачи пары файлов, для этого приходится использовать DropBox, обменники и тому подобные сервисы. Большинство обменников перегружено, имеют ограничения, тонну рекламы, низкую скорость.Торренты – больше предназначены для передачи крупных файлов, необходимо наличие приватного торрент-трекера, клиента.
Читать дальше →

Nginx + uWSGI + Django, один из вариантов запуска

Reading time4 min
Views34K
Статья описывает один из способов развертывания Django-проектов, в связке Nginx + uWSGI на Unix-подобных операционных системах. Тестирование, а так же дальнейшая рабочая эксплуатация производилась на FreeBSD, однако на Linux процесс будет схож, за исключением некоторых незначительных моментов.
Читать дальше →

Как не выстрелить себе в ногу

Reading time5 min
Views5.7K
Без использования unit-тестов и TDD очень легко выстрелить себе в ногу. С тестами и TDD сделать это намного сложнее, но если у вас получится, вы останетесь без ноги.

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

В этой статье я постараюсь объяснить о чем, собственно, разговор. Для чего нужно TDD и как его аккуратно использовать.

Что такое TDD в двух словах? — это написание разработчиком тестов до реализации функциональности.
По совету Роя Ошерова разобьем вопрос применимости TDD на два:

  • Зачем писать тесты?
  • Зачем писать тесты до реализации?

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

Делаем качественный переплёт для любимой книги

Reading time7 min
Views208K

Вступление


Приветствую всех.

Люди любят читать. Но не все, и не всё. А то, что любят, не всегда можно найти в магазинах. А если и можно найти, то не всегда это по карману. Из этого следует один элементарный факт: что-то с этим надо делать. Конечно, можно читать с экрана монитора/ноутбука/телефона. Или распечатать и читать в разрозненных, пусть и упорядоченных, листочках. Кроме того (это более затратный вариант, но для любителя чтения он лучше), можно купить специализированную читалку на электронных чернилах. Да, она решает проблему, но… Спустя какое-то время начинаешь скучать по весу настоящей книги, по шелесту перелистывания бумажных страниц, и по кипе других подобных маловажных, но таких приятных сердцу мелочей.
И из этой неприятности тоже есть свой выход. Просто-напросто надо самому сделать нужную книгу.
Осторожно, под катом очень много фотографий.
Читать дальше →

Как правильно читать объявления в Си

Reading time7 min
Views47K
Даже совсем зеленые программисты на Си, не испытывают проблем с чтением таких объявлений:
int foo[5]; // foo массив из 5 элементов типа int
char *foo; // foo указатель на char
double foo(); // foo функция возвращающая значение типа double

Но как только объявления становятся немного сложнее, проблематично точно сказать что это. Например:
char *(*(**foo[][8])())[];

Как же научиться их читать?

Как выбрать VPS хостинг

Reading time4 min
Views24K
Неприятности начались с того момента, когда мой любимый американский хостер вдруг перенес мой многолетний аккаунт на новый сервер и установил хитрый лимит на память php для всего аккаунта. И вроде бы memory_limit 90M на первый взгляд достаточно для любого сайта, но этот лимит действует на весь аккаунт в целом. Т.е. сайты, расположенные на одном аккаунте, начинают «душить» друг друга. Начались проблемы с форумом phpbb посещаемостью всего 2000 уников в сутки. При превышении лимита памяти сервер отдавал 500 ошибку.

Опытные люди, не читая далее, сразу скажут, что предложила мне техподдержка: конечно же переход на их VPS. Для отечественного хостинга это обычное дело, но от буржуев я такое услышал впервые. Выход в таком случае один — переход на другой хостинг, ибо с «террористами переговоров не ведут» да и 15$ за их 300Mb VPS мне показалось несколько дороговато.

Выбрал Open VZ VPS в России 768Mb за ~500 рублей. Все поставил, вроде работает. Но тут черт меня дернул перед сменой DNS проверить нагрузку с помощью loadimpact.com и меня накрыл тихий ужас: при одновременном доступе к сайту 50 посетителей страницы грузились по 60 секунд.
Читать дальше →

Перенаправление функций в Mach-O библиотеках

Reading time13 min
Views9.1K
В предыдущей статье был описан метод перехвата вызовов для разделяемых библиотек ELF. А сейчас мы посмотрим как сделать то же самое с библиотеками в формате Mach-O.

Вкратце напомню ситуацию. Имеем программу под Mac OS X, которая пользуется множеством сторонних динамически-компонуемых библиотек, которые, в свою очередь, также пользуются функциями друг друга.

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

Как обычно, нетерпеливые могут все скачать и попробовать прямо сейчас.
Решение и много картинок

Вышла новая версия OpenVPN Access Server

Reading time2 min
Views25K
image
Сегодня вышла новая версия OpenVPN Access Server. OpenVPN Access Server (OpenVPN-AS) это набор инструментов для установки и настройки, которые упрощают быстрое развертывание VPN-сервера удаленного доступа. Он основывается на популярном программном обеспечении с открытым исходным кодом OpenVPN, позволяя работать с настроенным VPN-сервером при помощи кроссплатформенного клиентского ПО. Предоставляемые сервером возможности — это тщательно подобранный набор из всех возможных конфигураций OpenVPN. Таким образом OpenVPN-AS упрощает настройку и последующее управление системой. Читайте далее, чтобы узнать, что нового появилось в версии 1.7.1.
Читать дальше →

Разработка с использованием WEB SQL DB и Local Storage

Reading time5 min
Views7.1K
Совсем недавно на хабре был пост, посвященный работе с WEB SQL DB. Одно из полезных применений локальных баз данных – работа в оффлайн режиме. Кроме этого, я покажу еще один вариант работы, когда вместо sql используется local storage, который поддерживается уже большим количеством браузеров.
Читать дальше →

Облако тегов средствами XSLT

Reading time7 min
Views3K
Не так давно столкнулся с необходимостью реализовать на одном из проектов то, что в народе называют «облаком тегов» — набор ссылок, в котором наиболее «весомые» элементы имеют бОльший размер. Для этого можно было бы, конечно, посчитать и получить все необходимые данные в PHP, на котором работает проект, но мне хотелось сделать конечный вариант отображения на XSLT и CSS, чтобы все необходимые величины для конфигурирования максимальных/минимальных размеров шрифта, например, были заданы в представлении, а не в логике приложения.

Возможно, кому-то мой опыт окажется полезным, поэтому публикую конечное решение здесь.

Итак, на входе у нас есть простейший XML с тегом и количеством его упоминаний:

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

Отладка REST-сервиса на коленке — готовое решение

Reading time1 min
Views5.6K
В процессе писания REST-сервиса уткнулся в странную проблему — не нашел приличного инструмента для отладки jsonp ответа от сервера.
За пол-дня накидал приемлемый вариант — одна html страница, которую можно хоть прямо с диска загрузить и кучка чужих js-либ, чтобы вся эта красота работала.
Выглядит примерно так:



Все бобро выложено на github, если кому-то нужно — пожалуйста!

Disclaimer: может оказаться полезным в случае если вам нужен кросс-платформенный и кросс-браузерный нативный «ajax-клиент имитатор» для кросс-доменных запросов с малым потреблением памяти и наглядным вводом и выводом ответа сервера.

Nagios мониторинг баланса мобильного телефона

Reading time6 min
Views10K

Для чего это нужно


Когда в семье число мобильных телефонов становится более 3-х, назревает вопрос мониторинга баланса и оповещения, когда баланс приближается к критической отметке. Есть много средств для мониторинга баланса, но зачем городить огород, когда под рукой есть незаменимый Nagios (так получилось что и дома у меня есть свой мониторинговый сервер, его основная задача наблюдать за состоянием серверов организаций которые я администрирую в нерабочее время). Данное решение также подойдет для мониторинга баланса корпоративного лицевого счета.
Читать дальше →

Information

Rating
Does not participate
Location
Dublin, Ирландия
Registered
Activity