Перейти до основного вмісту

Публікації

Показано дописи з березень, 2011

Python: PEP-8 чи не PEP-8

Пост - не технічний, кому не цікаво - можете далі не читати... PEP-8, хоча й фактично є пропозицією по розширенню Python під номером 8, серед Python програмістів уже став терміном, що позначає правила стилю оформлення коду. Ні, я не збираюсь зараз описувати його тут - про нього можна почитати в першоджерелі . Питання в тому, слідувати цьому стандарту, чи не слідувати? Ітак, стандарт це в більшості випадків добре, оскільки вносить порядок. Наприклад, стандарт USB 2.0 - просто прекрасний стандарт, уявіть собі, якби флешки були не USB, а кожна мала б свій вихід :)... Жахливо, так, були б у нас USB-порти як card-reader'и - 62 в 1.. Реально 62 в 1 Інша справа з PEP-8. Тут все по іншому, адже програма не змінює свою поведінку, якщо ми будемр робити відступ не в 4 пробіла, а 2 (добре, що більшість, все-таки, робить 4), або будемо ставити пробіл перед другою дужкою, чи не будемо і т.д..  Отже, кожен програміст може редагувати свій код як йому хочеться. Мені, наприклад, подобається

Python: Обчислювані аргументи функцій

Вступ Для більш-менш притомного Python програміста наступна форма визначення функції не є секретом, і взагалі досить часто використовується: >>> def f(a, b=4) ...     return a+b Абсолютно друнувата функція, що не несе практичного сенсу, але тим не менш є дуже зручною в даному випадку. В нашій функції b - необов'язковий аргумент, в чому ми можемо переконатись, зробивши декілька викликів: >>> f(1,3) 4 >>> f(0) 4 >>> f(2) 6 Отже, тут все очевидно. Що ж станеться з функцією, якщо ми передамо аргументу значення по замовчуванню як обчислюваний вираз? Документація по Python нас строго попереджує : значення по замовчуванню обчислюється тільки один раз, окрім значень, що змінюються (наприклад, списків, за посиланням є навіть приклад такої ситуації). Давайте спробуємо: >>> from random import random >>> def f2(d=random()) ...         return d >>> f2() 0.62437741519371093 >>> f2() 0.62437741519371093

Засоби розробки для мови Go і Lite IDE

Google Go - мова нова, фактично, поки що навіть релізів ще не було, але, тим не менш, робота над ним кипить надактивно, кожен день додаються нові можливості, фіксяться баги і оновлюється документація. Таким чином, на даний момент Go уже є повноцінною мовою, яку починають використовувати в реальних маленьких та середніх проектах. А тому хочеться  мати достойне IDE, щоб скрасити сірі будні кодінгу на Go. Сказати, що розробники мови не думають про простих смертних програмістів не можна. Витягнувши з mercurial-репозиторію код проекту, можна помітити в кореневій папці цікавий каталог misc, по-нашому "різне", чи "всяка фігня". Так от в цей пакет включена підтримка режимів редагування Go коду для: Kate (редактор під KDE) XCode (Mac OS IDE) Emacs Vim Але одна лише підствітка синтаксису звичайно ж не є повноцінним IDE. Для мене найпершим варіантом було використання gedit на Ubuntu. Одна добра людина описала, як можна додати підсвітку синтаксису для Go в gedit . Оскільки

Регулярні вирази в Python: вивчення та оптимізація

Writing a regular expression is more than a skill -- it's an art. Jeffrey Friedl Що це таке? Рано чи піздно майже кожному програмісту в своєму житті доводиться стикатись з регулярними виразами. Термін "Регулярні вирази" є перекладом з англійської словосполучення "Regular expressions" і не є зовсім точним, а для тих, хто перший раз почув цей термін, мабуть, навіть спантеличуючим (я, наприклад, коли вперше почув, ніяк не міг собі второпати по назві, хоча б приблизно, що це, і для чого використовується). Літературний і більш осмислений переклад звучав би, мабуть, як "шаблонні вирази". Але назва вже прижилась, а скажете "шаблонні вирази" - вас просто не зрозуміють :). Звідси: Регулярний вираз -  це рядок, що задає шаблон пошуку під-рядків в рядку. Регулярні вирази використовуються для аналізу текстів на предмет відповідності текстової інформації деякому шаблону. Наприклад , шаблон, що задає слово, яке містить букву "к". Де застосовують

pywinauto: Стережись event'ів, бо вони неочевидні

Передмова В даному пості мова піде про підводні камені при використанні стороннього програмного забезпечення через засім автоматизації дій pywinauto, а саме про події (events). Як відомо,  GUI -бібліотеки будуться в стилі подійного (event-driven) програмування. Таким чином, будь-яка дія додатку є відповіддю на дію користувача. Тобто всередині існує певний цикл, який ходить по черзі подій, що формується діями користувача і запускає реакції на ці дії. Таким чином, отримуємо відповідь на конкретну подію. Розібрались. Суть проблеми Проблеми виникають, коли розробник не знає, як саме обробляються події в програмі, дії якої автоматизуються через pywinauto . Розглянемо це діло на більш конкретному прикладі - Adobe Reader 9. Цей прекрасний софт дозволяє нам відкривати PDF-документи, а ще він має прекрасну форму пошуку, з якою можна погратись. Виглядає вона так, як показано на рис. 1 . Рис 1. Форма пошуку Adobe Reader. Отже, з того, що нам цікаво, ми бачимо, що форма має текстове поле вво

wxPython + py2exe: помилкии по-людськи

Передмова Які б додатки не створювались, на різних етапах розробки і підтримки додатків статься непередюачувані помилки, які потрібно якось відловлювати. В цьому пості иова піде про облагороджування десктопних додатків під windows, створених на wxPython  і загорнутих в виконуваний файл за допомогою  py2exe . Необхідні знання Перше - конструктор wx.App Отже, почнемо. Перше, що потрібно знати, це параметри конструктора класу додатку wx.App. В даному випадку нам цікаві аргументи redirect  та filename . - redirect - відповідає за переспрямування потоків стандартного виводу і потоку помилок. Якщо значення  True (а на Windows по замовчуванню так і є), стандартний вивід буде переспрямований. - filename - власне пункт призначення переспрямованого потоку (див. redirect ). Якщо значення не встановлено, то бто рівне  None (а на Windows по замовчуванню так і є), стандартне виведення буде переспрямоване в стандартне вікно (воно, як відомо, складається з текстової області, в яку сипляться п

Ubuntu Linux: Montior out of range

Передмова Прийшов я, значить, на роботу, стукнув по кнопці включення комп'ютера, і через декілька секунд загрузки Ubuntu побачив напис: Monitor out of range (68.5kHz * 60Hz) , а система не грузиться. От блін, думаю, приплив. Ну що ж, звісно, першою моєю дією було натискання " Ctrl" + "Alt" + "F1" , які перенесли мене в лінуксову консоль. Monitor out of range Недовго думаючи, встановив lynx: sudo apt-get install lynx-cur і ввів в Гуглі нехитрий пошуковий запит: " Ubuntu monitor out of range ". Трошки полазив (більше в лінксі, вибачте, не витримав) і все, що я встиг знайти - це те, що проблема з X.org. Нє, ну це дуже цінна інформація (сарказм). З того, що порадили:  sudo dpkg-reconfigure xserver-xorg  не допомогло зовсім. І тут я згадав І тут я згадав, що вчора хотів собі поміняти розширення екрану з 1600*900 на 1980*1080, і навітьзробив це. Але дарма, так як я ще додатково встановив частоту оновлення, яку мій тазік дозволити собі (мабуть)