Почему не так?
alex mclander maksimenko
[info]mclander
Спасибо за обращение в нашу службу поддержки. Пожалуйста, оцените работу нашего оператора Лисициной Елены Андреевны. Для этого переведите телефон в тоновый набор и наберите цифру, соответствующую вашим впечатлениям.
0 - овца тупая
1 - пизда безмозглая
2 - кто, блядь, со мной разговаривал?
3 - о чем, блядь, со мной разговаривали&
4 - вы чё, там все охуели?
5 - дайте топор, суки, я к вам приеду!
6 - огромное спасибо, ваша информация мне очень помогла

Свампи где лазер
alex mclander maksimenko
[info]mclander
Лазер спрятался в испытаниях Крэнки. Достаточно оттянуть их вниз, по той же схеме, как и поиск планетария. И вуаля видна иконочка.

Много букв об унынии (недопубликованное на хабре)
alex mclander maksimenko
[info]mclander
Я обещал, что следующая статья на Хабре будет посвящена системному анализу. Я стараюсь быть честным (насколько может быть честным человек, работающий в IT - "вот теперь я точно уверен, что всё будет сделано ко вторнику"). Давайте не будем считать, это статьёй. Просто мыслями вслух, обращением к парню, который уже не работает в Гугл.

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

Вторая вещь: Google+ уныл. Он полностью соответствуем корпоративной политике Гугла, делать унылые отлично сделанные вещи. И на этот раз она не сработала. Странно?

Я попробую это обосновать. Будет немного"ненависти", несколько спорных мыслей и, в качестве печеньки, креативный позитив.
Read more... )
  • Leave a comment
  • Add to Memories

Python, SWIG, Windows
alex mclander maksimenko
[info]mclander
Эта статья – описание моих экспериментов по сборке модулей для Python. Мне понадобился высокоуровневый интерфейс к библиотеке LibRaw, притом в первую очередь под Windows.

Последний раз модуль для питона на C++ я писал в 2004 году, модуль был к мертворожденной (к счастью не мной) библиотеке ( я тупо продавал свои умения за зарплату). Естественно, навыки не закрепились. Помню, что SWIG сильно облегчил мне работу, поскольку нужен был объектный интерфейс, а «ручками» его писать ломало. Память у меня профессиональная – то есть избирательная и короткая, поэтому пришлось прыгать сначала.

Это статья только про настройку SWIG для Python под Windows. Писать же модули на C/C++ с использованием SWIG гораздо проще, чем всё настроить (кстати, у меня такое впечатление, что это парадигма современного программирования).

Read more... )

Постельные размеры Full/Queen/King/Cal-King
alex mclander maksimenko
[info]mclander
На распродаже увидел интересное постельное бельё. С вот такими размерами на выбор Full/Queen/King/Cal-King.

Погуглил и нашёл:

Twin measures 34 inches x 72 inches
Full measures 52 inches x 72 inches
Queen measures 58 inches x 75 inches
King measure 74 inches x 75 inches
Cal king measures 72 inches x 80 inches

А вот тут размерчики другие

Standard Bed Frame & Mattress Sizes (width x length)
Standard King Size 78 inches x 80 inches
Standard Queen Size 60 inches x 80 inches
Standard Full Size (Double) 54 inches x 75 inches
Standard Twin Size (Single) 39 inches x 75 inches

Specialty Bed Frame & Mattress Sizes (width x length)
California/Western King Size 72 inches x 84 inches
California Queen Size 60 inches x 84 inches
Full Extra Long Size 54 inches x 80 inches
3/4 Size 48 inches x 75 inches
Antique Size 48 inches x 72 inches
Twin Extra Long Size 39 inches x 80 inches

Waterbed Replacement Mattress Sizes (width x length)
Super-Single 46 inches x 82 inches
Queen 58 inches x 82 inches
King 70 inches x 82 inches

Split Box Spring & Foundation Sizes (width x length) x 2 PIECES
King split box spring / foundation 39 inches x 80 inches
Queen split box spring / foundation 30 inches x 80 inches
Full split box spring / foundation 27 inches x 75 inches

Как будет время составлю табличку "от" и "до".

Nikon D800 анонсирован, где же Canon 5D Mark III?
alex mclander maksimenko
[info]mclander
Почти неделя прошла от анонса полнокадровой зеркалки Nikon D800. Почти всё, что ждали никонианцы почти год, в новом флагмане (полу)профессиональной линейки Никона воплощено. Японцы обещаю начать продажи нового чуда в середине марта. Во что верится с небольшим скрипом, после истории с задержкой выхода D7000.

А что же Canon?



Canon EOS 5D Mark III, анонс которого ждали не менее долго, так и не вышел из под покрова тайны. В итоге я решил написать его самостоятельно. Давайте пофантазируем, чем производители ремней с красной каймой, смогут ответить производителям ремней с каймой желтой. С учётом характеристик Nikon D800.


Read more... )
  • Leave a comment
  • Add to Memories

Такой разный split
alex mclander maksimenko
[info]mclander
Забавный баг обнаружился в JS скрипте,разбирая его выяснил, что split в javascript ведет себя не так как в Perl. Эксперимент с питоном показал, что отличия есть и в питоне (что почему-то не удивляет). Прежде всего, различия проявляются при ограничении фрагментов. Кроме того, если пустой сепаратор в Perl и JS обозначает, что строку надо разбить посимвольно, то в Python - вылезает exception.

Итак, если указан ограничитель limit, то:
JS - разделяет строку на фрагменты полность, игнорирую limit+1 и далее фрагменты
Python - разделяет строку максимум на limit+1 фрагмент, где limit+1'ый фрагмент содержит неразделяемый "хвост" строки
Perl - разбивает строку максимум на limit фрагментов, последний фрагмент содержит неразделяемый "хвост" строки

JavaScript:
> '1234567890'.split('',3)
["1", "2", "3"]


Python:
C:\Python27>python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
>>> '1234567890'.split('',3)
Traceback (most recent call last):
File "", line 1, in
ValueError: empty separator
>>> '1 2 3 4 5 6 7 8 9 0'.split(' ',3)
['1', '2', '3', '4 5 6 7 8 9 0']


Perl:
C:\>perl -e "print join(', ', split('','1234567890',3))"
1, 2, 34567890



Чтобы не особо напрягаться в связке Pel - Javascript я набросал обертку для JS
function perl_split(separator, str, parts){
	var result = str.split(separator);
	if (parts && result.length > parts) 
		result[parts-1] += result.splice(parts, result.length-parts).join(separator);
	return result;	
}


Инфа по теме http://javascript.ru/String/split

Робослайдер - первый блин
alex mclander maksimenko
[info]mclander
Оказался комом. А использование моей рельсы в качестве базы для робослайдера ошибкой. Завтра выложу видео, где видно колбашение базы. Особенно сильное при "подтягивании" площадки звездочкой. При отталкивание в принципе вполне сносно.

А что будет, когда на площадке повиснет ещё пара кг? Да и тестировался я не с самым тяжелым свом объективом. Мой "штатник" 28-105 вообще расцентровал площадку почти до обрушения конструкции. Пришлось поставить макрушник 60мм. А если навесить, скажем, тамрон 200/4 то что? )

Как появится время попробую еще поиграться с увеличением веса и центровкой. Вообще предполагалось, что сверху станет монтажные "рельсы". Пара 15мм направляющих с площадкой. Такую конструкцию можно легко зацентровать.

Зато разобрался с енкодером, котнролерами мотора, работой с джойстиком и управлением motor shield ом.

Финальная "слойка" следующая:
- Arduino duemilanove (пред. версия Uno)
- DFrobots 2a Motor Shield - на нем мотор
- DFrobots Extension shield - на нем Joistick sensor

Всё это было запитано от аккумулятора 7.4В. Для тестов слойка питалась от того же мотора, что двигатель (что в принципе чревато, но для тестов можно).

Программа. Снимает данные с джойстика и скармливает их мотору.

// пины мотора
int E1 = 5;  // Направление вращения (HIGH/LOW)
int M1 = 4;  // Скорость вращения (0..255)
                          
int joyPin = 1; // Аналоговый вход джойстика А1

// настройки джойстика
int JMIN = 0;  // мин значение
int JMAX = 1023; // макс значение
int JCENTER = (JMAX-JMIN+1) / 2; // нейтральное положение джойстика
int JSENS = 4;  // округление (не мудрствуя лукаво степень двойки)
int DEL = 20;    // задержка опроса джойстика (20 мс - 50 раз в секунду)

void setup() { 
    pinMode(M1, OUTPUT);   
    pinMode(joyPin, INPUT); 
} 

int oldVal = -1; // предыдущее положение джойстика

void loop() { 
  
  int value = ((analogRead(joyPin)+1) >> JSENS) << JSENS; // считываем значение джойстика и округляем смещением
  if (value != oldVal){ // проверяем надо ли что-то делать
    oldVal = value;
    digitalWrite(M1, value > JCENTER ? HIGH : LOW); // задаем направление вращения
    analogWrite(E1, map(abs(JCENTER-value), 0, JCENTER, 0, 255)); // скорость мотора в зависимости удаления джойстика от центра
    //Serial.println(map(abs(JCENTER-value), 0, JCENTER, 0, 255));
  }
 
  delay(DEL); //  задержка, чтобы не дергаться слишком часто

}


Робослайдер - приручение енкодера
alex mclander maksimenko
[info]mclander
Делаем маленький шажок вперед. Осваиваем работу с енкодером.

Продавая мне девайс (мотор+енкодер) добрые американцы обещали 10 листов (20 страниц) документации. Слово они сдержали прислали пачку бумажек разной степени занимательности. Правда вся необходимая мне информация разместилась на одном листе. Даже не на одной странице.
- работа мотора от 12 до 24 вольт (но, как показала практика, он себя и на 3В вполне неплохо наворачивал)
- синий/красный провод - питание мотора
- серый - питание енкодера (+5в)
- зеленый - земля енкодера (-)
- белый - "шина данных" енкодера, должна быть притянута 10Ком к плюсу
- один оборот вала - 68 тиков енкодера.

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

int wheelInt = 0; // pin 2, прерыване 0
long count = 0; // число тиков енкодера

void setup(){
  attachInterrupt(wheelInt, wheel, RISING); // вешаем прерывание
  Serial.begin(9600); // открываем поток
}


void wheel(){ // обработка прерывания
  count++;    // тут всё очень сложно (прибавлем число тиков)
}

void loop() {
  Serial.println(count); // вывод числа тиков
  delay(1000);           // кажную секунду
}


Сперва сделал ошибку притянув данные к земле (перепутал pullup и pulldown ), что немного разочаровало отсутствием результата. Но быстро разобрался.

Радостно покрутил руками вал мотора полюбовался на растущие циферки. Проверил магическое число 68, 10 раз провернув вал. Полученные результаты 699 и 681, показали, что дока не соврала. Расхождение - небольшой перекрут и, в первом случае, где я крутил колесо помалу возможное обратное вращение вала (оно тоже дает тик.).

Вуаля. Правда пока писал пост, подсоединил мотор к источнику питания и столкнулся с переполнением (сперва count был объявлен как int). Заменил объявление на long, и сейчас консоль показывает

452472
453028
453587
454146
454706
455267
455825
456387
456948
457511
458072
458635

Легко подсчитать, что вал делает чуть больше 8 оборотов в секунду (при питании 3в). Но рассчитывать скорость и инерцию вала я планирую завтра. А время написание статьи можете подсчитать сами ;)
  • Leave a comment
  • Add to Memories

Робослайдер - стоим на месте
alex mclander maksimenko
[info]mclander
Развлекался с копированием чужой интеллекиуальной собственности - пытался сделать копию шестеренкифоллоу фокуса. Для чего был прикуплен мешочек с двумя киллограммами гипса и извлечен из пыльного угла фунтовый пакет с термопластиком.

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

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

http://habrahabr.ru/blogs/DIY/94867/
http://habrahabr.ru/blogs/DIY/94776/

Идея работы с гипсовыми формами однако не ушла, а преобразовалась. Кроме того стало понятно, что пластик в форму надо наносить не одним куском (который вылезет за форму и опачки), а слоями. Буду думать - хочу сделать держалку для направляющих из него. Есть с чего сделать отпечаток.

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

You are viewing [info]mclander's journal