Pull to refresh
-2
0
One Hell @onehell

Лень и чревоугодие

Send message

Интересные приемы программирования на Bash

Reading time6 min
Views131K
Эти приемы были описаны во внутреннем проекте компании Google «Testing on the Toilet» (Тестируем в туалете — распространение листовок в туалетах, что бы напоминать разработчикам о тестах).
В данной статье они были пересмотрены и дополнены.
Читать дальше →
Total votes 181: ↑175 and ↓6+169
Comments67

Файл Humans.txt от Google

Reading time1 min
Views12K
У Google есть файл robots.txt, содержащий список всех путей, которые не могут быть проиндексированы веб-пауками. Но также есть файл humans.txt, которым они пытаются показать, что Google — это не только боты и алгоритмы.

image

«Google построен большой группой разработчиков, дизайнеров, исследователей, роботов и т.д. в разных местах по всему миру. Он непрерывно обновляется и построен с использованием большого количества инструментов и технологий. Если вы хотите помочь нам, посмотрите google.com/jobs».

Тим Брей из Google связал этот текстовый файл с twitter-аккаунтом Google Jobs, что сделало его более популярным.

В файл robots.txt для Youtube недавно был добавлен юмористический комментарий: «Создано в далеком будущем (2000 год), после восстания роботов в середине 90-х, которое уничтожило всё человечество».
Total votes 113: ↑84 and ↓29+55
Comments44

Homebrew: Менеджер пакетов для OS X

Reading time3 min
Views121K
Все менеджеры пакетов в Unix имеют определенные недостатки и большинство Linux-дистрибутивов пытаются по-разному эти недостатки обойти. В этом посте я расскажу про Homebrew — новый менеджер пакетов, нацеленный на простоту использования.

До Homebrew было несколько различных попыток создать эффективные пакетные менеджеры для OS X. Две наиболее популярные вылились в итоге в Fink и Macports, но у каждой из них все равно есть свои острые углы. В частности, в обоих создание своих пакетов или портов является черезчур сложным.

В Homebrew создавать новые пакеты и работать с ними проще пареной репы. Давайте посмотрим.
Читать дальше →
Total votes 38: ↑30 and ↓8+22
Comments51

Оптимизация Ubuntu (и прочих Linux-ов) под SSD

Reading time4 min
Views205K
Доброго времени суток всем читающим. В данной мини-статье мне хотелось бы собрать и рассмотреть основные моменты оптимизации работы (и, конечно, продления жизненного цикла ) твердотельных накопителей. Практически всю информацию можно легко найти в сети, но тут я попытаюсь упомянуть пару подводных камней.
Читать дальше →
Total votes 128: ↑118 and ↓10+108
Comments109

Приемы написания скриптов в Bash

Reading time7 min
Views173K
Администраторам Linux писать скрипты на Bash приходится регулярно. Ниже я привожу советы, как можно ускорить эту работу, а также повысить надежность скриптов.

Совет 1

Не пишите скриптов, которые выполняют действия ничего не спрашивая. Такие скрипты нужны довольно редко. А вот всевозможного «добра» для копирования, синхронизации, запуска чего-либо, хоть отбавляй. И если в любимом Midnight Commander Вы вдруг нажали не на тот скрипт, то с системой может произойти все что угодно. Это как правила дорожного движения — «написано кровью».

Совет 2

Отталкиваясь от предыдущего, в начало каждого скрипта неплохо помещать что-то вроде:
read -n 1 -p "Ты уверен, что хочешь запустить это (y/[a]): " AMSURE 
[ "$AMSURE" = "y" ] || exit
echo "" 1>&2
Команда echo, кстати, здесь нужна потому, что после нажатия кнопки <y> у вас не будет перевода строки, следовательно, следующий любой вывод пойдет в эту же строку.

Совет 3

Это ключевой совет из всех. Для того, чтобы не писать каждый раз одно и то же — пользуйтесь библиотеками функций. Прочитав много статей по Bash, я вынужден констатировать, что этой теме уделяется мало внимания. Возможно в силу очевидности. Однако я считаю необходимым напомнить об этом. Итак.
Заведите свою библиотеку функций, например myfunc.sh и положите ее, например в /usr/bin. При написании скриптов она не только поможет сократить ваш труд, но и позволит одним махом доработать множество скриптов, если Вы улучшите какую-либо функцию.
Например, в свете совета 2 можно написать такую функцию:
Читать дальше →
Total votes 121: ↑83 and ↓38+45
Comments46

Эффективная организация труда

Reading time4 min
Views12K

Об управлении проектами и организации работы предприятия написано много, но как обстоит дело с личной эффективностью? Из чего складывается хорошо организованное рабочее место работника ума и клавиатуры?






Начну с принципов, стоящих за хорошо организованной работой:
  • информация структурирована, разнится по типу данных (документы, книги, музыка, видео, фото)
  • удобные, хорошо изученные, заточенные под себя рабочие инструменты
  • автоматизация повторяющихся действий
  • рабочая документация
  • профессиональная литература под рукой
  • овладение универсальными рабочими навыками(слепая печать, умение находить редкую информацию в интернете)
  • регулярное архивирование данных
  • набор девайсов


Подробности
Total votes 54: ↑41 and ↓13+28
Comments50

Код в стиле «дамп потока сознания»

Reading time5 min
Views9K
Некоторое время назад в одной из своих статей я описал понятие пластилиновой архитектуры. В продолжение я бы хотел описать один из самых распространённых «стилей программирования», который, к сожалению, очень часто встречается у молодых и неопытных специалистов.

Итак, давайте представим, что перед программистом стоит задача написать новый модуль или дописать некоторую функциональность к уже существующей системе. Что будет делать опытный специалист? Он нальёт себе китайского чая, откинется на спинку кресла, возьмёт карандаш и начнёт думать. Он нарисует структуру модуля, обдумает сущности, интерфейсы и взаимодействие между ними, опустится на уровень конкретных методов, вероятно, напишет юнит-тесты на интерфейсы. Только потом он начнёт наполнять кодом существующую структуру (либо делегирует эту задачу десятку индусов-кодеров).

Теперь давайте посмотрим, как поступит в этом случае типичный джуниор. Есть задача – её надо решить. Их так учили в университетах. Многие из них ещё находятся под влиянием маргинального лозунга «пиши код, б##дь!». Итак, он наливает себе растворимого кофе, надевает наушники с чем-нибудь пожёстче и погромче и уходит в поток на пару-тройку часов.

Всё бы ничего. Я ничего не имею против кофе, наушников или состояния потока. Более того, обычно это наиболее эффективный и, зачастую, единственный способ писать хороший код. Но мы рассматриваем типичный случай молодого и неопытного программиста, поэтому давайте посмотрим на результаты.
Читать дальше →
Total votes 103: ↑87 and ↓16+71
Comments119

Десять правил спокойной разработки

Reading time2 min
Views51K

Введение


Современный темп разработки ПО просто поражает своей скоростью. Функционал всегда «нужен вчера». Зачем? Конкуренция — обойдут, обгонят. Времени тестировать нет, надо отгружать функционал, надо, надо, надо.

На помощь командам разработки приходят практики, методологии, подходы и четкие регламенты. Попробую сформулировать в виде десяти правил концепцию «спокойной» разработки. А она то вынудит использовать современные методологии разработки ПО. И заказчик спокоен, и нервы свои целы. Profit!
Читать дальше →
Total votes 112: ↑86 and ↓26+60
Comments138

Что нужно делать смолоду или как стать богатым айтишником

Reading time7 min
Views631K

Статья написана после прочтения статьи Копи деньги смолоду или пара утверждений, легко проверяемых в Excel.

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

Нужно заметить, что три года назад, я и сам не знал этого принципа, и мне даже пришлось продать свою машину, чтобы выплатить долги. Но я не расстроился – я уже знал этот принцип и был уверен, что у меня получится стать богатым. Ведь если ты действуешь исходя из этого принципа, то настоящее богатство – лишь вопрос времени. И я не ошибся.
Не важно, кто ты – дизайнер или программист, но я уверен, если ты тоже последуешь ему, то станешь богатым.
Ближе к делу
Total votes 389: ↑303 and ↓86+217
Comments578

Улучшаем notify-send. Добавление нового сообщения в предыдущее

Reading time1 min
Views6.6K
Несколько версий назад в Ubuntu появилась новая система оповещений — libnotify. Она предоставляет ненавязчивый способ сообщить что-то пользователю, не мешая его работе.
Но при всех её достоинствах, есть и недостатки. Например, то что они некликабельны смущает большое количество пользователей. А еще — если вы получаете несколько таких сообщений, то они будут показываться подряд с интервалом в 10 секунд. И сейчас мы попробуем частично это исправить.

Читать дальше →
Total votes 69: ↑52 and ↓17+35
Comments42

Кастомизация Skype для Linux. Оповещение о появлении «избранных» контактов в сети

Reading time3 min
Views5.4K
Основное средство общения в нашей компании — это шашлыки чат Skype. Статус «в сети» означает присутствие на рабочем месте. Иногда ждёшь кого-то, начальству не напишешь «зайди плиз срочно» — в общем, уведомление о появлении в сети определённого человека было бы полезно.

В Skype для Linux нет такой «галочки» для отдельных контактов (думаю, что и пользователи других ОС с этим знакомы). Зато есть неоспоримое преимущество — почти безграничные возможности командной строки:
Читать дальше →
Total votes 50: ↑44 and ↓6+38
Comments8

Симплекс Серпинского

Reading time5 min
Views16K


Данная статья предназначена для ознакомления с базовой математической составляющей компьютерной многомерной графики. На примере симплекса Серпинского в статье рассматриваются вопросы построения, перемещения, проецирования и отображения сложных многомерных геометрических фигур.
Также имеются картинки, видео, исходники, и уверяю вас, что всё очень просто, читайте, вникайте.
Читать дальше →
Total votes 111: ↑111 and ↓0+111
Comments49

PyS60: Сказ о том, как блокнот для Symbian писался

Reading time7 min
Views4.3K

Предисловие


Доброго времени суток, хабраюзеры!
Так уж получилось, что большую часть времени я нахожусь вдали от своего ПК, поэтому большинство его функций возлагаются на девайс, который всегда со мной — на смартфон на базе Symbian 9.4. Наряду с мультимедийными функциями мне очень часто бывает необходимо делать текстовые заметки, наброски статей для блога, а случается, что и приходится работать с (x)html и CSS. И если с мультимедийными функциями Nokia 5530XM справляется на ура, то работа с текстом осложнена отсутствием удобного для меня софта – мой привередливый нрав не признает те программные продукты, которые я имел возможность найти на просторах Интернета и протестировать на своем девайсе. Я нуждался в самом простом блокнотике, в то время как мне встречались текстовые редакторы, обремененные лишними для меня функциями. И когда я вспомнил, что спасение утопающих – дело рук самих утопающих, тогда и понял, что свои потребности удовлетворять придется самому.
Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments21

Экспорт истории сообщений из Skype

Reading time4 min
Views32K
Многие пользователи Skype в Linux замечали насколько неудобно там сделана работа с историей сообщений чата. Нет нормального поиска, сообщения за длительный период времени грузятся очень долго. Нет возможности экспорта в другие форматы/клиенты.

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

Поверхностный поиск готового решения для экспорта истории сообщений не привел к успеху. Поэтому я, собрав всю доступную информацию, написал своё.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments51

Автоответчик на звонки в Skype на Python

Reading time4 min
Views11K
Привет! Данный топик будет посвящен написанию автоответчика для Skype, который будет принимать за вас звонки, проигрывать приветствие и записывать ответ.
Читать дальше →
Total votes 75: ↑73 and ↓2+71
Comments20

Рисуем цветной кубик в Mayavi

Reading time10 min
Views6K
Приветствую, хабравчане!

Сегодня хочу вам рассказать о том, что такое Mayavi и с чем его запивают его едят.

Mayavi — это кроссплатформенное приложение для визуализации научных данных (и не только). Распространяется по лицензии BSD, что позволяет использовать его в коммерческих приложениях.
image

Что умеет?
  • Строить 2D и 3D модели на основе скалярных/векторных данных
  • Открывать файлы VTK, PLOT3D
  • Сохранять результаты рендера в различных графических форматах
  • Может даже рендерить результаты MRI(Магнитно-резонансная томография)


Работать с ним можно тремя способами:
1) Работать непосредственно в интерфейсе Mayavi.
2) Подгружать/передавать в Mayavi уже готовые данные.
3) Написать питоновский скрипт, в котором можно задать для Mayavi все желаемые возможности.

Читать дальше →
Total votes 65: ↑61 and ↓4+57
Comments19

Регулярные выражения, пособие для новичков. Часть 1

Reading time14 min
Views915K
Регулярные выражения (РВ) это, по существу, крошечный язык программирования, встроенный в Python и доступный при помощи модуля re. Используя его, вы указывается правила для множества возможных строк, которые вы хотите проверить; это множество может содержать английские фразы, или адреса электронной почты, или TeX команды, или все что угодно. С помощью РВ вы можете задавать вопросы, такие как «Соответствует ли эта строка шаблону?», или «Совпадает ли шаблон где-нибудь с этой строкой?». Вы можете также использовать регулярные выражения, чтобы изменить строку или разбить ее на части различными способами.
Читать дальше →
Total votes 105: ↑99 and ↓6+93
Comments32

Регулярные выражения, пособие для новичков. Часть 2

Reading time18 min
Views260K
В первой половине этого пособия мы раскрыли лишь малую часть возможностей регулярных выражений. Во второй, большей, половине мы рассмотрим некоторые новые метасимволы, то, как использовать группы для получения частей совпавшего текста, разбивать строки, находить и замещать части текста. В конце немного поговорим о распространенных ошибках.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments20

Несколько подробностей о функции main

Reading time5 min
Views19K
Однажды заинтересовался, содержимым стека функции main процесса в linux. Провел некоторые изыскания и теперь представляю вам результат.

Варианты описания функции main:
1. int main()
2. int main(int argc, char **argv)
3. int main(int argc, char **argv, char **env)
4. int main(int argc, char **argv, char **env, ElfW(auxv_t) auxv[])
5. int main(int argc, char **argv, char **env, char **apple)

argc — число параметров
argv — нуль-терминальный массив указателей на строки параметров командной строки
env — нуль-терминальный массив указателей на строки переменных окружения. Каждая строка в формате ИМЯ=ЗНАЧЕНИЕ
auxv — массив вспомогательных значение (доступно только для PowerPC [1])
apple — путь к исполняемому файлу (в MacOS и Darwin [2])
Вспомогательный вектор — массив с различной дополнительной информацией, такой как эффективный идентификатор пользователя, признак setuid бита, размер страницы памяти и т.п.

Далее о том как получить массив вспомогательных значений для i386 и x86_64, а также об остальном содержимом «сегмента» стека.
Читать дальше →
Total votes 87: ↑82 and ↓5+77
Comments8

Верхом на танке — Часть 1 — Поле боя

Reading time8 min
Views9.1K
В этот прекрасный, ничем не отличающийся от остальных день (если не брать в расчёт тот факт, что холодная погода разбила в осколки все мечтания о хотя бы паре тёплых дней в этом году что бы поездить на велосипеде), у меня выдалось хорошее настроение. И хорошее оно даже несмотря на то, что я отчаялся ставить хакинтош на свой ноут, и пришёл к неутешительной мысли, что если я хочу хоть что-то написать под iOS, то мне надо копить на продукцию фирмы Эппл. Но собственно пост не об этом, а о небольшой жизни крохотной игрушки, которую мы с вами и попытаемся создать. Честно говоря, в добрые времена я не так уж и много играл в предка нашего творения (которого ещё и не существует), но определённые теплые воспоминания ещё остались в моём сердце. Итак… Танки! Танчики! БатлТанкс! БатлСити!
Писать будем на JavaScript с выводом на canvas.
Далее более
Total votes 119: ↑111 and ↓8+103
Comments49

Information

Rating
Does not participate
Location
Буркина Фасо
Date of birth
Registered
Activity