Pull to refresh
135
0.2
Михаил Бусырев @Aquahawk

инженер

Send message

Строим систему мышления

Reading time6 min
Views7.7K
В связи с дискуссией, возникшей в хабратопике, я хотел бы немножко поговорить о системах мышления, свободе и числе 42.

Чего ви пагите?



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

Данное мнение, на мой взгляд, ошибочно.
Давайте разберемся!
Total votes 129: ↑101 and ↓28+73
Comments103

Однострочные программы на Perl

Reading time7 min
Views39K

Введение


Я собираюсь рассказать об однострочных программах на Perl. Если вы овладете однострочным Perl`ом, то можете сэкономить кучу времени (я экономлю).

Цель поста — показать как Perl можно использовать заместо find, grep, awk, sed. В конце поста будет написано зачем это надо.
Читать дальше →
Total votes 104: ↑95 and ↓9+86
Comments45

Siege — утилита для нагрузочного тестирования веб-серверов

Reading time7 min
Views82K
Надеюсь, что данный материал будет кому-нибудь полезен.

Siege – это утилита для нагрузочного тестирования веб-серверов. Она была создана для того чтоб дать разработчикам возможность проверить ресурсоёмкость своего кода в условиях, максимально приближенных к реальным. Так же Siege может имитировать обращения к сайту сразу нескольких пользователей. Это позволяет держать сервер как бы «под осадой» долгое время. Количество запросов, произведённых при «осаде», рассчитывается из общего количества пользователей и количества их обращений к серверу. Например 20 пользователей, обратившись по 50 раз, создают в общей сложности 1000 запросов. Результат, выводимый программой после тестирования, включает в себя время затраченное на проверку, общее количество переданной информации ( включая заголовки ), среднее время ответа сервера, его пропускную способность и число запросов на которые пришёл ответ с кодом 200. Эти данные формируются и выдаются при каждой проверке. Подробно они описываются ниже. Siege имеет 3 основных модели работы – режим регрессионного тестирования, режим имитации Интернета и режим грубой силы. Программа считывает порцию ссылок из конфигурационного файла и обращается к ним по очереди ( режим регрессионного тестирования ) или случайно ( имитация интернета ). Или же пользователь может указать один единственный адрес к которому будут производиться все обращения – режим грубой силы.

UPD: спасибо за плюсы, перенес в тематический блог.
Читать дальше →
Total votes 76: ↑74 and ↓2+72
Comments67

Software Configuration Management // Метрики и документация

Reading time4 min
Views4.4K
И снова здравствуйте.
Продолжаю серию заметок о SCM. В прошлый раз была поднята тема использования систем контроля версий. Судя по плюсам, поступившим от контингента, тема остается актуальной для многих. Есть намерение продолжить рассказ о контроле версий, рассмотреть централизованные и распределенные системы контроля. Но перед этим отойду чуть в сторону и немного расскажу о формальных сторонах управления конфигурацией, чтобы закрыть общетеоретические темы (и перейти к холиварам, хыхы).

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

Стало быть, адресую сегодняшнюю заметку тем, кто немного задумывается над тем, куда движется его проект и насколько эффективно работает команда.

Узнать всю Правду!
Total votes 8: ↑5 and ↓3+2
Comments8

Видео урок по пайке мелочевки

Reading time1 min
Views33K
Снял тут пару пробных роликов по пайке простейшей мелочевки. Думаю будет полезно тем кто хочет примкнуть к паяющей братии, но при виде разной мелочевки впадает в ступор «как же ЭТО паять?» На самом деле все просто :)

Для начала выводные компоненты:


Затем резисторы:


А напоследок микросхемы:


О том как сделать печатную плату в домашних условиях уже было сказано и показано

Если заинтересовала тема и хочется узнать большего, то добро пожаловать на easyelectronics.ru
Total votes 187: ↑181 and ↓6+175
Comments94

Веб-аналитика: анализируй это! Часть 4. От статистики к аналитике

Reading time3 min
Views8.5K
Прошу простить за большую паузу между выпусками рассылки: мне нужно было время на подготовку к проведению большого тренинга и разгребание новых материалов. Что ж, много времени прошло, многое изменилось — даже слово “Интернет” теперь нужно писать с большой буквы! Больше такого не повторится, так что продолжим наше путешествие. Напомню адреса прошлых выпусков:

Часть 1. Вступление.
Часть 2. Сбор данных.
Часть 3. Базовые метрики.

Перед тем, как перейти к описанию метрик и технологий анализа, хочу еще раз напомнить о том, зачем мы тратим на это своё время.
Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments7

Девелопим для себя

Reading time2 min
Views2.5K
Привет всем! Хочу поделится с аудиторией Хабра утилитой, которую написал мой друг Евгений Доманов и я.
Программка помогает не гадит на рабочий стол и в то же время иметь все ярлыки под рукой.

Читать дальше
Total votes 83: ↑63 and ↓20+43
Comments109

Простой калькулятор на " боярском" диалекте MSVС++

Reading time2 min
Views33K
Последующий код навеян этим крутым топиком с «боярскими» дефайнами кейвордов С++. Мы творчески дополнили набор, и получился следующий текст программы:
Читать дальше →
Total votes 188: ↑154 and ↓34+120
Comments71

Perl и GUI. Работа с меню

Reading time3 min
Views3.1K
Обзор виджетов Tk, я начну с рассмотрения главного меню c учетом особенностей различных ОС.

Для начала создадим заготовку для нашего приложения:

#!/usr/bin/perl -w
use strict;
use Tkx;

our $PROGNAME = 'app';
our $VERSION = '0.1';
<habracut>

my $windowingsystem = Tkx::tk_windowingsystem();
my $IS_AQUA = ($windowingsystem eq 'aqua');

# Учитывая, что имена некоторых кнопок могут различаться, 
# в OSX это Control, в Win/X11 это Ctrl, добавим еще несколько переменных
# (пригодится для хоткеев)
my $plat_acc_ctrl = ($^O eq 'darwin') ? ('Control-') : ('Ctrl+');
my $plat_evt_ctrl = ($^O eq 'darwin') ? ('Control-') : ('Control-');

# Главное окно.
my $mw = Tkx::widget->new('.');

Tkx::tk( appname => $PROGNAME );
Tkx::wm_minsize( $mw => qw(320 200) );

# новое меню прикрепляется с помощью параметра -menu
$mw->configure(
  -menu => make_menu( $mw ),
);


Tkx::MainLoop;
1;

sub on_quit {
  Tkx::tk___messageBox( -message => 'Goodbye ;]' );
  exit;
}

sub show_about {
  Tkx::tk___messageBox( -message => "$PROGNAME $VERSION" );
}

sub make_menu {
 my $mw = shift || return;

 # По умолчанию, все меню выглядит подобно в GIMP, их можно открепить
 # Поэтому, выключим данную опцию
 Tkx::option_add('*Menu.tearOff', 0)

 # ... продолжение ниже

  return $m; 
}


Все как обычно, File, Edit, Help. (меню каскадное). Новый объект создается с помощью метода new_menu(); (подобно контейнеру)

my $m = $mw->new_menu(); # Верхний уровень
my $fm = $m->new_menu(); # File
my $em = $m->new_menu(); # Edit

# А теперь, добавим наши пункты в верхний уровень
$m->add_cascade( -label => 'File', -menu => $fm, -underline => 0 );
$m->add_cascade( -label => 'Edit', -menu => $em, -underline => 0 );



Добавление осуществляется через add_cascade(), где
-label — это заголовок меню.
-menu — виджет
-underline — индекс буквы подчеркивания. Необходимо для быстрой навигации с помощью кнопки Alt+буква (нумерация идет с 0)

смотрим, что получилось.
image

Толку от пустого меню нету, поэтому «набьем» его командами

# Меню File
$fm->add_command(
  -label => 'Do something',
  -underline => 0,
  -command => sub { },
);

# разделитель
$fm->add_separator();

$fm->add_command(
  -label => 'Quit',
  -underline => 0,
  -accelerator => "${plat_acc_ctrl}Q",
  -command => [\&on_quit],
);

Tkx::bind( all => "<${plat_evt_ctrl}q>" => [\&on_quit] );

# Меню Edit
$em->add_command(
  -label => 'Cut',
  -underline => 2,
  -accelerator => "${plat_acc_ctrl}X",
  -command => sub { Tkx::event_generate(Tkx::focus(), '<
Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments22

Хабраэффект

Reading time1 min
Views4K
Сегодня очередной стартап, ссылка на который попала на главную Хабрахабра, пострадал от хабраэффекта.

В связи с чем не могу сдержать крик. Люди, не будьте нищебродами! Неужели, если вы запускаете стартап, в который вкладываете энное количество человекочасов, вам жалко оплатить нормальный хостинг, вроде mediatemple.net (никакой выгоды я от этой ссылки не получу). 20 долларов же всего в месяц. Не 100. Да и другие, аналогичные по качеству хостинги, вероятно есть (скиньте ссылки, кто знает).

Такая ли уж большая разница, платите вы 7 долларов в месяц, 12 или 20? Ну что за мелочи, если разговор идет о стартапе, то есть, как минимум, на что-то претендующем проекте?

Вам жалко пары долларов на стабильность проекта под нагрузками, или что???
Total votes 243: ↑168 and ↓75+93
Comments215

Видео уроки по бодибилдингу и фитнесу или расфасовка информации с помощью DLE

Reading time2 min
Views1.7K
Всем привет!

Хочу рассказать о своем первом мини-проекте, о сборнике видео по бодибилдингу и фитнесу.
image

Предыстория


После пары лет занятий в тренажерном зале и наблюдений во время тренировок за окружающими коллегами, были сделаны выводы, что очень многие допускают серьезные ошибки в технике выполнения упражнений, особенно новички. Я и сам поначалу допускал грубые и не очень ошибки, которые выливались в зря потраченное время, силы, деньги и некоторые травмы. Как этого избежать?
Читать дальше →
Total votes 177: ↑142 and ↓35+107
Comments70

Неочевидная особенность в синтаксисе определения переменных

Reading time3 min
Views6.5K
Предлагается совершенно невинный на вид кусок кода на C++. Здесь нет ни шаблонов, ни виртуальных функций, ни наследования, но создатели этого чудесного языка спрятали грабли посреди чистa поля.

struct A {
  A (int i) {}
};

struct B {
  B (A a) {}
};

int main () {
  int i = 1;
  B b(A(i)); // (1)
  return 0;
}


* This source code was highlighted with Source Code Highlighter.


Вопрос: какой тип у переменной b? Совсем не тот, который можно было бы предположить на первый взгляд.

Ответ под катом
Total votes 87: ↑75 and ↓12+63
Comments70

Архитектурные инструменты в Visual Studio 2010

Reading time3 min
Views23K


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

Новые архитектурные инструменты в Visual Studio Team System 2010 помогут вам понять имеющееся приложение, спроектировать необходимую вам новую функциональность и проверить что ваша реализация соответствует вашему дизайну.

Читать дальше →
Total votes 72: ↑52 and ↓20+32
Comments20

Особенности национальной типографики

Reading time6 min
Views8.3K
Не знаю, от чего, но мне почему-то очень интересны все эти закорючки и значки, вроде запятых, тире, кавычек, точек и прочей, вроде бы, бессмысленной ерунды, которая не воспринимается всерьез большинством людей. Нетрудно догадаться, что развился этот интерес после знакомства с Ководством, которое включало в себя популяризированное и наглядное объяснение основных норм употребления этих типографических знаков в русском языке. И когда я принялся за более-менее глубокое изучения английского, я стал обращать внимание на своеобразность его правил в этой области и определенные отличия, многие из которых на первый взгляд кажутся весьма необычными. Об этом-то я и хочу поведать; быть может, кому это тоже покажется любопытным, а может даже полезным.

Однако, должен подчеркнуть, что все нижеследующее — только наблюдения и результаты расспросов «местных», но никак не сформулированные правила. Буду рад замечаниям людей, действительно разбирающихся в вопросе.

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

Что там дальше?
Total votes 91: ↑84 and ↓7+77
Comments51

WPA теперь может быть взломан за 1 минуту

Reading time1 min
Views6.4K

Исследователи из Японии (Toshihiro Ohigashi из университета Hiroshima и Masakatu Morii из университета Kobe) разработали способ для взлома шифрованного соединения WPA всего за одну минуту.
Атака производится чтением шифрованного трафика между компьютером и роутерами, использующими шифрование WPA.
Ранее, в ноябре прошлого года, сообщалось о возможности обхода защиты за 15 минут.

Атака работает только на WPA системах, использующих алгоритм Temporal Key Integrity Protocol (TKIP), но не работает на системах, использующих WPA с шифрованием AES.

Согласно отчету авторов атаки, существуют значительные ограничения для ее использования, тем не менее, следует избегать шифрования WPA с TKIP, равно как и протокола WEP, давно считающегося очень ненадежным.

Оригинал: ZdNet.com
Total votes 50: ↑44 and ↓6+38
Comments39

peeep.us — ссылки на закрытые страницы

Reading time1 min
Views5.3K
Привет, Хабр!

Хочу сообщить тебе, что как-то ночью я, большой ненавистник сервисов сокращения ссылок, и сам запустил свою сокращалку. Но не простую, а с изюминкой.

Суть сервиса в том, что вместе с самой ссылкой peeep.us хранит содержимое страницы с точки зрения пользователя, который создавал ссылку. Это дает возможность опубликовать или дать другу ссылку на страничку, обычно недоступную для просмотра извне. Например, можно показать другу классный пост на Лепре или личное сообщение вконтакте. А еще его можно использовать просто как хранитель состояния сайта. По пииипнутой ссылке будет всегда доступно содержимое страницы на момент времени, когда она была создана (вместе с удаленными коммантариями, например). Это как кеш Google или archive.org, только по требованию.

Вот как это выглядит: прекрасный пост Артема Шитова. Видна лепра?

Чтобы просто сохранить состояние страницы нужно ввести адрес на peeep.us и кликнуть submit. А если нужно сделать ссылку на закрытую страницу, придется воспользоваться букмарклетом, который есть там же. Букмарклет скачает текст страницы XMLHttpRequest'ом, а затем отправит куда надо. Все, вроде бы, несложно.

Кстати, сам сервис работает на Google AppEngine, то есть потенциально закроется или заддосится только вместе с гуглом целиком ;). А если кому интересно, откуда такое тупое название, так это от слова peep — подглядывать [в замочную скважину].
Total votes 182: ↑167 and ↓15+152
Comments139

Серия скринкастов по VIM

Reading time1 min
Views5.8K
Если вы хотели начать работать с VIM, но вас что-то останавливало, то перед вами прекрасная возможность начать снова.

Ну а если вы уже продвинутый Vimmer то для вас тоже найдётся что посмотреть.
Total votes 67: ↑57 and ↓10+47
Comments29

Цикл статей по основам Software Configuration Management

Reading time5 min
Views23K

Пролог


Что такое управление конфигурацией в разработке ПО? Зачем оно нужно? Думаю, немногие способны полностью и внятно ответить на этот вопрос. Большинство обычно вспоминает системы контроля версий, которые сами используют. Кто-то упоминает багтрекинг. Кто-то считает вершиной CM отращивание веток в любимой системе контроля версий. А кто-то вообще уходит в сторону и начинает говорить про ITIL и про то, как он записывает в какую-нибудь базу параметры всего софта, который установлен у него в фирме.

Несколько странно и немного досадно наблюдать за этим. Дело в том, что я проработал в SCM в общем сложности около 5 лет, из них 3 года — интегратором в Motorola, на одном из проектов по разработке софта для сотовых телефонов. По ходу дела прочитал кучу материалов по этой теме и получил большой практический опыт — в том числе по работе с одной из мощнейших систем контроля версий IBM Rational ClearCase (см. linkedin в профиле). В итоге в голове сформировалась некоторая целостная картина того, что же это на самом деле — software configuration management.
Ну а дальше-то что?
Total votes 44: ↑41 and ↓3+38
Comments42

Что делать с полезными идеями, которые мешают работать?

Reading time3 min
Views899
Работа над большими, серьезными или нестандартными проектами в большинстве случаев требует особого подхода, завидной прилежности, не дюжего терпения и крепкой психики. Я могу сказать, что владельцы небольших студий трезво оценивающие свои ресурсы, часто отказываются от подобных предложений по целому ряду причин.

На мой взгляд, основная состоит в том, что для нас (небольших разработчиков) это очень «длинные деньги». Как бы подробно менеджеры не документировали все в техническом задании, в реальной разработке такой проект быстро обрастает балластом из различных предложений, усовершенствований, доделок, не учтенных сложностей, плохой обратной связи, новых идей, мыслей и т.д., которые возникают практически на всех этапах разработки.
Читать дальше →
Total votes 37: ↑29 and ↓8+21
Comments19

Неожиданное коварство параметров по умолчанию или язык мой — враг мой

Reading time3 min
Views12K
Хочется поделиться одним поучительным примером того, как, казалось бы, совершенно безобидная возможность языка программирования может обвести вокруг пальца даже опытного разработчика.

Вот пример кода. Вопрос традиционный, что напечатает программа? Постарайтесь скомпилировать и выполнить этот очень простой код «в уме», так будет интереснее.

#include <iostream>
using namespace std;

class A {
public:
    virtual void Foo (int n = 10) {
        cout << "A::Foo, n = " << n << endl;
    }
};

class B : public A {
public:
    virtual void Foo (int n = 20) {
        cout << "B::Foo, n = " << n << endl;
    }
};

int main() {
    A * pa = new B ();
    pa->Foo ();

    return 0;
}


Не заглядывайте в ответ! Ну что, определились? Смелее!
Посмотреть ответ
Total votes 126: ↑112 and ↓14+98
Comments346

Information

Rating
2,646-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity