Как стать автором
Обновить
23
0
Петухов Михаил @OldFornit

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

Отправить сообщение

Функциональное программирование в среде 1С: Предприятие 8

Время на прочтение4 мин
Количество просмотров5.9K
В последнее время наметилась тенденция прникновения идей функционального программирования в массы. Для меня, как программиста 1С, интереснее всего повышение уровня абстракции при работе с табличными данными. Одно дело кодировать циклы со множеством переменных, которые меняют свое значение от итерации к итерации, а через месяц надо проводить «отладку глазами» (а то и на самом деле отладчик запускать), чтобы понять как эти циклы работают. Гораздо изящнее использовать готовые отлаженные алгоритмы, которые можно применить к таблице в целом, и получить ожидаемый результат.

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

Примерно 2 года назад я начал писать библитеку универсальных функций, которые применял в повседневной работе. Практика убедила меня, что подход работает, и приносит ощутимую пользу. А совсем недавно я открыл для себя язык LINQ, который используется на платформе .NET для унифицированной работы с коллекциями, формирования SQL-запросов и других полезных вещей. Я завидую белой завистью шарперам, у которых есть такой замечательный инструмент!

Изучив библиотеку стандартных операторов запроса, которая составляет ядро LINQ, я решил написать аналогичную библиотеку для 1С Предприятия 8.
Читать дальше →
Всего голосов 40: ↑30 и ↓10+20
Комментарии43

Как подружить Kohana с nginx и PHP FastCGI

Время на прочтение1 мин
Количество просмотров2.3K
Так как для nginxa понятие .htaccess в прямом виде отсутствует для корректной обработки URLов фреймворком Kohana приходится писать собственный конфиг для nginx.

Читать дальше →
Всего голосов 21: ↑10 и ↓11-1
Комментарии7

Божественная безупречность

Время на прочтение5 мин
Количество просмотров510
На Хабре, все притчи о том как надо жить, эта же о том зачем. Это конечно мои личные выводы, надеюсь каждый найдёт что-то своё. К сожалению автора не знаю, но если понравится, в upd добавлю ещё одну не менее жизнеутверждающую.
светлая история в стиле жж
Всего голосов 60: ↑54 и ↓6+48
Комментарии9

Двухсторонняя синхронизация Google календаря Kontact KDE

Время на прочтение1 мин
Количество просмотров1K
Основано на хабратопике откуда собственно и узнал о замечательной утилите GCALDaemon. Огромное спасибо ColdFlame
Качаем собственно утилиту.
Установка достаточно проста содержимое архива копируется в /usr/local/sbin, устанавливаются права:
chgrp -R groupname /usr/local/sbin/GCALDaemon
chmod -R g+w /usr/local/sbin/GCALDaemon
chmod 755 /usr/local/sbin/GCALDaemon/bin/*.sh

Все, можно приступать к настройке.
/usr/local/sbin/GCALDaemon/bin/config-editor.sh
Вкладка — HTTP synchronizer, жмем Google account. Вкладка File synchronizer — включаем синхронизацию, Кнопка New — добавляем календари, и запоминаем (указываем новый) путь к файлу синхронизации.
Не забываем /usr/local/sbin/GCALDaemon/bin/standalone-start.sh прописать в автозагрузку.
В календаре указываем новый источник file, прописываем путь.
Ура, все работает)
В качастве бонуса- поиск в адресной книге Gmail из KAddressBook.
/usr/local/sbin/GCALDaemon/bin/config-editor.sh вкладка LDAP server, ставим галочку «включить», выбираем свой почтовый ящик, закрываем с сохранением.
На машине Kontact — KAddressBook — Настройка — Каталоги LDAP — Новый сервер. Прописываем 127.0.0.1, «OK» Теперь из адресной книги доступен поиск в книге Gmail как в каталоге LDAP.
Успешно используется на работе (OpenSUSE) и дома (Kubuntu)/
Всего голосов 9: ↑6 и ↓3+3
Комментарии1

Ошибочное толкование авторского права.

Время на прочтение21 мин
Количество просмотров4.6K
Я надеялся что кто-нибудь с большим литературным даром нежели мой сподобится перевести фундаментальную статью, в которой объясняется и доказывается (со ссылками) что есть такое на самом деле авторское право и почему оно такое есть. Но прошло несколько лет, никто этого сделать не сподобился и я, в конце концов, решился. Статья переведена нахрапом, в переводе наверняка есть ошибки, если обнаружите — напишите мне в приват, я исправлю.

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

Она показывает, что авторское право — вещь, в сущности, нужная и полезная, но сравнивать его нужно не с неотчуждаемыми правами типа права владения имуществом, а скорее с соглашениями о разделе продукции когда общество временно передаёт права на нечто, безусловно принадлежащее ему (в случае с СРП — содержание земных недр, в случае с авторским правом — свободу граждан) в обмен на то, что оно считает полезным для себя (деньги — в случае с СРП, книги/музыку/фильмы/программы/etc — в случае с авторским правом) так как не владеет средствами производства (для добычи ископаемых нужна особая техника, для создания произведений искусства — талант). Основное содержание статьи — объяснение того, «как мы дошли до жизни такой», когда соглашение начинает напоминать историю с пресловутым «школьным порталом» (то есть мы отказываемся от кучи прав на многие десятки лет — а взамен получаем некоторое количество попсы и бульварной литературы в основном).

Итак, статья
Всего голосов 52: ↑45 и ↓7+38
Комментарии108

Немного о деревьях

Время на прочтение3 мин
Количество просмотров27K

Вступление


Встречалась ли вам ситуация, когда необходимо реализовать хранение древовидной структуры в реляционной БД?

PostgreSQL on tree

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

В данном топике мы с вами поговорим об одной из тех возможностей, которые существуют для организации хранения деревьев в PostgreSQL — ltree.
Читать дальше →
Всего голосов 86: ↑84 и ↓2+82
Комментарии54

Элемент Zend_Form для выбора изображения

Время на прочтение5 мин
Количество просмотров2.2K
Здравствуйте. Без долгих вступлений, хочу показать как выглядит элемент, о создании которого я собираюсь рассказать:

Элемент Zend_Form RadioImage

Я решил назвать это RadioImage.
Читать дальше →
Всего голосов 38: ↑30 и ↓8+22
Комментарии37

Новый пуленепробиваемый синтаксис @font-face

Время на прочтение3 мин
Количество просмотров71K
С самого начала «вебошрифтовой революции» мы полагались на неизящные хаки деклараций @font-face, чтобы шрифты из Паутины загружались во всех браузерах. Может ли существовать лучший путь? Вполне изящный и совместимый с будущими браузерами?

Вкратце об истории вопроса


В сентябре 2009 года Пол Айриш (Paul Irish) огласил пуленепробиваемый синтаксис для записи деклараций @font-face. Синтаксис был компактным и в то время действовал во всех браузерах. Недавно стали поступать, со временем усиливаясь, жалобы на отказ шрифтов загружаться в Android — поэтому мы стали вместо того рекомендовать синтаксис «Mo' Bulletproofer», сочинённый Ричардом Финком (Richard Fink). К сожалению, синтаксису «Mo' Bulletproofer» требуется двойная запись деклараций, так что поддержка его сложнее.

Синтаксис Fontspring @Font-Face


А вот таким этому коду следовало бы быть с самого начала. Чистым, ясным и простым:
@font-face {
	font-family: 'MyFontFamily';
	src: url('myfont-webfont.eot?') format('eot'), 
	     url('myfont-webfont.woff') format('woff'), 
	     url('myfont-webfont.ttf')  format('truetype'),
	     url('myfont-webfont.svg#svgFontName') format('svg');
	}

Что? Я не понял.


Хак Трюк, заставляющий этот код заработать — символ «?» вслед за именем файла EOT. Без шуток.

Как это срабатывает


Читать дальше →
Всего голосов 141: ↑132 и ↓9+123
Комментарии42

Обновлён ModularGrid — удобный инструмент для HTML-верстальщиков

Время на прочтение1 мин
Количество просмотров2.7K
Демо-страница
Спешу сообщить, что наконец-то обновил ModularGrid — небольшой javascript, который рисует гайды и модульную сетку поверх вёрстки:
  • появилась панель с контролами для тех, кто не любит хоткеи;
  • состояние сетки теперь сохраняется в cookie;
  • было исправлено несколько досадных ошибок.

Демо-страница | проект на GitHub | предыдущая статья
Всего голосов 72: ↑66 и ↓6+60
Комментарии44

Уязвимость связки PHP+nginx с кривым конфигом

Время на прочтение1 мин
Количество просмотров60K

Summary


Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




Background


Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}

Читать дальше →
Всего голосов 163: ↑146 и ↓17+129
Комментарии109

Ошибки конфигурирования nginx (или как правильно писать рерайты)

Время на прочтение4 мин
Количество просмотров99K
Привет, хабралюди!

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

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

Ошибка номер 1, самая фатальная.
Всего голосов 92: ↑88 и ↓4+84
Комментарии56

Named scope для Zend Framework

Время на прочтение3 мин
Количество просмотров1.4K
Работая с базой, постоянно приходится писать множество методов поиска. Вот типичный сценарий:

Предположим, что нам надо выводить список пользователей на сайте. Вначале это может быть так — $user_table->fetchAll(). А если нужно выводить только девушек? Напишем метод getFemaleUsers(). А только тех, кто не забанен и имеет аватарку? А вывод в админке только девушек, но без учета статуса пользователя?

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

Читать дальше →
Всего голосов 51: ↑44 и ↓7+37
Комментарии77

Включаем IPv6 на dd-wrt

Время на прочтение2 мин
Количество просмотров13K
Если верить статистике на сайте tunnelbroker.net то до исчерпания пула IPv4 адресов осталось полтора года. И я решил рассказать как перевести свой маршрутизатор под управлением dd-wrt на новый протокол. Тестировалось на Dir-320, но должно работать и на любом другом ашан-роутере, который поддерживается dd-wrt.
Пынг!

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии9

Emacs Starter Kit

Время на прочтение8 мин
Количество просмотров15K
Emacs. Большая и сложная программа. Ему как ничему другому подходит это определение. Эмакс был создан очень давно в лаборатории искуственного интллекта MIT, он несет в себе гены очень своеобразной культуры лисп-хакеров былых времен. С тех пор он не раз переписывался, улучшался, дополнялся и обрастал тысячами расширений в течение десятков лет. Эмакс, если и был когда-то мощным текстовым редактором, сейчас стал некоей универсальной программой, в нём можно делать абсолютно всё что угодно, если это хотя бы немного затрагивает собой задачу отображения или редактирования текста, и даже больше. Людям знающим универсальность играет на руку, ведь одной программой можно делать тысячу разных дел, при этом не прилагая усилий для переучивания к разным интерфейсам. Людей, впервые запустивших эмакс подобная универсальность и непривычный интерфейс поначалу пугает. Научиться пользоваться эмаксом, понять его идею и проникнуться ею задача непростая, трудоемкая и долгая (как говорится, пологая кривая обучаемости).
Читать дальше →
Всего голосов 84: ↑79 и ↓5+74
Комментарии76

Миграция с Ext3 на Ext4

Время на прочтение6 мин
Количество просмотров18K
Эта статья для тех кто хочет перейти с с файловой системы Ext3 на Ext4, при этом сохранить все свои файлы и каталоги. Постараюсь описать наиболее общие ошибки возникающие в процессе миграции с Ext3 на Ext4, не устанавливая систему заново.

Основания для перехода.


Объяснение преимуществ и недостатком Ext4 выходит за рамки этой статьи (воспользуйтесь поиском по хабрутут это есть). Если вы не страдаете от ограничений накладываемых Ext3 и не готовы рискнуть и просто так перейти на Ext4 то очень хорошо подумайте, а нужно ли это вам? ;) С другой стороны, перейдя на Ext4 вы можете почувствовать прирост производительности вашей файловой системы и увеличить её надёжность, при этом не понеся никаких накладных расходов ;)
Читать дальше →
Всего голосов 55: ↑50 и ↓5+45
Комментарии43

UML, Классы и Отношения

Время на прочтение10 мин
Количество просмотров67K
Существует много разработанных теорий, задокументированных технологий и парадигм программирования. Перед тем как углубиться с головой в их изучение было бы мудро изучить сам принцип взаимодействия программ и их структур. UML предлагаем вам разработанный стандарт что бы сделать это.

подробности
Всего голосов 85: ↑66 и ↓19+47
Комментарии46

nginx как reverse proxy

Время на прочтение1 мин
Количество просмотров41K
Несколько читателей блога webo.in просили меня выложить конфигурацию связки nginx + Apache, на которой работает сервер. Хотя это и не относится напрямую к теме клиентской оптимизации. Однако, большинству специалистов, занимающихся клиентской оптимизацией, будет интересно узнать о настройке нескольких хостов для выдачи статики и пара других трюков, связанных с балансировкой запросов.

Также я подробно комментирую все настройки конкретно Apache, которые так или иначе относятся к самой оптимизации времени загрузки страниц.

читать дальше на webo.in →
Всего голосов 4: ↑4 и ↓0+4
Комментарии46

Яндекс.Интернет, как верстали макет

Время на прочтение1 мин
Количество просмотров2.1K
Заглянув в код страницы internet.yandex.ru, увидел интересную штуку:
< — NOTE: Не подключать в production -->

Сам яваскрипт в файле оказался следующим
Читать дальше →
Всего голосов 190: ↑186 и ↓4+182
Комментарии53

Modalbox — создаем диалоговые окна

Время на прочтение1 мин
Количество просмотров3.2K
modal

Modalbox — библиотека на prototype и script.aculo.us для создания диалоговых окон и мастеров, обьем ее кода всего 10кб. На мой взгляд это настоящий атрибут веб два нольности.
Читать дальше
Всего голосов 29: ↑25 и ↓4+21
Комментарии34

Написание приложений, основаных на Qt, на языке Python

Время на прочтение5 мин
Количество просмотров120K
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Всего голосов 54: ↑53 и ↓1+52
Комментарии34

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность