Pull to refresh
7
0
foe_nix @foe_nix

User

Send message

Пишем полезную программу для KDE4 на питоне за два часа

Reading time11 min
Views7.9K
Появилось на работе пара свободных часов и решил я себе сделать жизнь удобнее.
По роду деятельности(а работаю я программистом) приходится много чего делать на удалённых серверах, доступ на которые имеется только по ssh. А писать и отлаживать программы удобнее всего локально, и только потом ставить на рабочую машину. Посему удобно использовать sshfs. Однако, набирать в консоли каждый раз команду на монтирование я устал, писать скрипт на баше — лень. Потому захотелось иметь графический менеджер sshfs маунтов, да ко всему прочему в KDE4.
Читать дальше →
Total votes 115: ↑109 and ↓6+103
Comments52

Сравнение PHP-фреймворков: CakePHP, CodeIgniter и Yii

Reading time11 min
Views47K
Не так давно на Хабре проскакивал пост о появлении нового PHP-фреймворка под названием Yii.
После ознакомления, этот фреймворк показался мне интересным, перспективным и достойным внимания.
Недавно Daniel Carrera выложил в своем блоге интересную статью «Comparison of PHP frameworks» о сравнении CakePHP, CodeIgniter и Yii.
С целью популяризации Yii среди русскоговорящего (и плохо-по-английски-читающего) населения я решил сделать перевод.
Читать дальше →
Total votes 127: ↑106 and ↓21+85
Comments136

Стать мэинтейнером. Часть вторая

Reading time9 min
Views4.9K
На второй день мы уже пообвыклись с идеей, что в дебиане и убунту любят действительно свободное программное обеспечение и уже начинаем задумываться о том, как бы нам начать собирать свой первый пакет. Но стоп! А какими программами мы вообще умеем пользоваться? Что?! OpenOffice.org Writer и Kopete? Не, ну так дело не пойдёт. Сегодня я расскажу вам обязательный минимум, который понадобится каждому будущему сопровождающему пакеты (я решил принять этот термин, оставив заморское слово «мэинтейнер» только в заголовке, как дань первой статье), да и просто любому убунтоводу пригодится в жизни.
(Части 1, 3 и 4)
Какие тайны нас ждут под хабракатом?
Total votes 50: ↑49 and ↓1+48
Comments79

Memoization в Python

Reading time1 min
Views16K
Memoization – свойство функций сохранять (кешировать) результаты вычислений, дабы не вычислять в последствии повторно.

Эта технология оптимизации позволят достичь прироста скорости работы за счет потерь в свободной памяти.

Допустим, у нас есть некая функция bigfunc, результат которой зависят только от переданных в нее аргументов, а сложность вычислений достаточно большая. Естественно нам не хотелось бы производить вычисления при каждом вызове bigfunc если она уже вызывалась ранее с теми же параметрами. Тут то нам на помощь и приходит memoization.

Для python декоратор для функции будет выглядеть следующим образом:

import cPickle
def memoized(func):
    memory = {}
    def memo(*args,**kwargs):
       hash = cPickle.dumps((args, sorted(kwargs.iteritems())))
       if hash not in memory:
           memory[hash] = func(*args,**kwargs)
       return memory[hash]
    return memo

Далее, нам достаточно объявить bigfunc как

@memoized
def bigfunc(…):
…

Или переопределить, если она уже объявлена:

bigfunc = memoized(bigfunc)

Декоратор, объявленный в начале статьи, работает только с пиклезуемыми объектами. Если ваша функция работает с непиклезуемыми объектами – вы можете заменить

hash = cPickle.dumps((args, sorted(kwargs.iteritems())))

на

hash = (tuple(args), frozenset(kwargs.items())

но вы потеряете возможность работы с mutable объектами.

Декоратор можно легко модифицировать, для ограничения количества закешированных элементов.
Total votes 57: ↑51 and ↓6+45
Comments17

Популярные ошибки администраторов jabber-серверов

Reading time2 min
Views30K
В связи с тем, что после недавних событий стали как грибы после дождя плодиться топики о том, как настроить свой jabber-сервер, я решил перечислить некоторые основные ошибки и заблуждения тех, кто настраивает jabber-сервер в первый раз. Речь пойдет про:
  • SRV-записи
  • SSL-сертификаты
  • Заблуждения о транспортах
Читать дальше →
Total votes 75: ↑70 and ↓5+65
Comments60

Функциональное программирование для землян — списки

Reading time6 min
Views10K
Продолжаю свое небольшое введение в функциональное программирование. На этот раз речь пойдет о списках и методах их обработки в функциональном стиле.

Читать дальше →
Total votes 53: ↑52 and ↓1+51
Comments42

Функциональное программирование для землян — функции

Reading time5 min
Views9.1K


В статье про Python пользователь Xronos попросил рассказать о функциональном программировании (ФП). Поскольку я одно время довольно плотно занимался с Lisp, я хотел бы немножко рассказать об этом. Сразу хочу сказать, что о чистом ФП речь не идет. Я расскажу о более простых и более применимых приемах на примере языка Python.

Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments26

Ribbon? Это просто! или Работаем с каскадными таблицами стилей (CSS) в Qt

Reading time6 min
Views22K
Некоторое время назад в одном из обсуждений я упомянул о том, что контрол «a-la ribbon» (который был использован в MS Office 2007 для организации меню) легко и непринуждённо реализуется средствами Qt.

Я не хочу спорить о том, удобен ribbon или нет (сам я больше склоняюсь ко второму мнению). Но на его примере можно отлично раскрыть возможности каскадных таблиц стилей для Qt (которые были представлены в Qt 4.2), чем я и займусь. Сразу прошу прощения: я не дизайнер, поэтому с точки зрения эстетики мой QRibbon скорее всего не дотянет до своего собрата от МС, но дизайнеры в МС, полагаю, в своей области превосходят меня на 2 головы, да и человеко-часов, думаю, там было затрачено в слегка побольше. Я же всего лишь демонстрирую общий принцип и базовые возможности.

Так как я сейчас изучаю язык Python, то для демонстрации был выбран именно он, но для C++ всё делается абсолютно так же. Заранее прошу прощения: Python я только-только изучаю, поэтому код может быть полон корявостей, так что прошу больно не пинать :)

Итак, начнём!
Читать дальше →
Total votes 75: ↑71 and ↓4+67
Comments43

Python, философия дизайна — Guido van Rossum (часть 1)

Reading time5 min
Views9.7K
image
Это первая часть статьи из официального блога автора любимого всеми нами языка. Поэтому повествование ведется от лица самого Гуидо ван Россума. Вторая часть здесь.

Дальнейший текст поможет нам нырнуть глубже в историю языка Python. Тем не менее, перед тем, как мы сделаем это, мне бы хотелось заострить внимание на философских вещах, которые помогли мне принимать решения, пока я разрабатывал дизайн и структуру Python.
А дальше?
Total votes 80: ↑73 and ↓7+66
Comments22

Частые ошибки программирования на Bash (окончание)

Reading time3 min
Views21K
Окончание перевода Bash Pitfalls. Предыдущие части доступны в блоге «Оболочки» (часть 1, часть 2) и в моём блоге.

22. echo "Hello World!"


Проблема в том, что в интерактивной оболочке Bash эта команда вызовет ошибку:
bash: !": event not found

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

Очевидное решение здесь не работает:
$ echo "hi\!"
hi\!

какое же тогда неочевидное решение?
Total votes 49: ↑46 and ↓3+43
Comments7

Синхронизация музыки в Ubuntu c iPhone по WiFi

Reading time2 min
Views4.5K
Синхронизировать музыку будем с Amarok.

1. Подготовка iPhone/iTouch:
— если у вас еще не стоит на телефоне BSD Subsystem и SSH, то поставьте их из Инсталлера;
— выставьте Settings->General->Auto-Lock в положение “Never”;
— подключите iPhone к той же точке доступа, к которой подключен ваш компьютер;
— зайдите в Settings->WiFi->имя подключения->синяя стрелка и посмотрите IP-адрес вашего iPhone и нажмите на “Static”. Теперь у вашего iPhone/iTouch будет постоянный IP.

2. Подготовка Ubuntu:
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments5

Apt-cacher как корпоративный сервер обновлений для Ubuntu/Kubuntu/*buntu

Reading time5 min
Views15K

Замена apt-mirror`у


apt-cacher — утилита для Debian-подобных дистрибутивов использующих apt в качестве установщика пакетов. Она кеширует файлы, которые скачивает пользователь с офф. зеркала обновлений и при следующем запросе выдает их из своего кэша.
Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments16

Загрузка Linux за 5 секунд

Reading time6 min
Views20K
Полный перевод статьи, анонсированной в http://habrahabr.ru/blogs/linux/41701/

На Конференции «Сантехников» Линукс (Linux Plumbers Conference) Arjan van de Ven, разработчик решений для линукс из Intel, автор PowerTOP, и Auke Kok, разработчик из Intel'овского Open Source Technology Center, продемонстрировали систему на базе линукс, которая загружается всего 5 секунд. Аппаратной основой для этой системы служил Asus EEE PC, с SSD диском. Разработчики преодолели рубеж в «загрузку за 5 секунд» в двух вариантах: модифицированная Fedora и модифицированный Moblin. EEE PC грузился быстрее, чем проектор успечал распознать сигнал с видеовыхода устройства, поэтому им пришлось обойтись без него и попросту поднести ноутбук поближе к зрителям.
Читать дальше →
Total votes 102: ↑75 and ↓27+48
Comments55
12 ...
10

Information

Rating
Does not participate
Location
Хотьково, Москва и Московская обл., Россия
Date of birth
Registered
Activity