*
  Мысли   Галерея   Проекты   Тексты  
  Мысли   Галерея   Проекты   Тексты  
Giver: 14888 get  (2014-12-19 01:26:32)
14888 músicas.
1113 álbuns.
1136 artistas.
72 days of bliss.

Giver: непонимаю  (2014-12-02 09:37:49)
[07:33:30] Giver: смотри

[07:35:28] klukvo4ka: что-то я не совсем вьезжаю(
[07:42:22] klukvo4ka: почему-то программирование - это сексуально)

Giver: намайнил  (2014-11-13 18:24:04)

Giver: да  (2014-10-25 21:54:55)

Однажды ученик спросил у Мастера:
— Долго ли ждать перемен к лучшему?
— Если ждать, то долго! — ответил Мастер.
— А если не ждать?
— То недолго! — ответил Мастер.
— А если перемен?
— То не ждать! — ответил Мастер.
— А если к лучшему?
— То недолго! — ответил Мастер.
— А если ли?
— То к! — ответил Мастер.
— Дядя Мастер, вы дурак?
— Да, — грустно признался Мастер.


Giver: flip/flop  (2014-10-21 21:27:23)

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

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

В интернете очень много разных вариантов как подключить периферию через COM и LPT порты, но, что интересно, кроме реле в них участвует набор самых разнообразных деталей, пара-тройка резисторов, конденсатор, тройка диодов, пара транзисторов. Я не совсем понимаю зачем это все и почему нет такой вот простой схемы на просторах. Паяется и собирается из любого подножного мусора, единственно транзистор нужен NPN типа, как видно из схемы. Диод можно и не свето-, естественно. На один COM-порт можно навесить минимум 2 такие схемы, на DTR (пин 4) и RTS (пин 7).

Под этим вашим линуксом управляется еще проще чем паяется. Пример для DTR(прим К.O.: чтобы управлять RTS, нужно DTR заменить на RTS)

#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
 
int main(void) {
    int status = 0, fd;
    if((fd = open("/dev/ttyS0", O_RDWR)) < 0) exit(1); // открываем последовательный порт.
    do {
        ioctl(fd, TIOCMGET, &status); // читаем текущее состояние
        printf("DTR is %dn", (status & TIOCM_DTR)); // выводим на экран
        status ^= TIOCM_DTR; // инвертируем значение линии 
        sleep(1); // ждем секунду
        ioctl(fd, TIOCMSET, &status); // записываем инвертированное значение
    } while(1); // смыть, повторить.
}


Giver: полезен  (2014-10-08 02:04:46)
[17:06:35] Stiletto: это чувство, когда в твой проект из трех строчек, написанный задней ногой, 
                     на отъебись, под одну конкретную задачу, ПРИСЫЛАЮТ ПУЛЛ-РЕКВЕСТ С ПОЛЕЗНЫМ ФУНКЦИОНАЛОМ
[17:06:50] Andor: та же фигня
[17:07:06] Andor: и ты такой
[17:07:07] Andor: понимаешь
[17:07:11] Andor: Я ПОЛЕЗЕН
[17:07:14] Andor: %)
[17:07:18] Stiletto: адада

17:07 < Andor> Thanks. Committed to V3_3_STABLE tree. Next rpm release (3.3.4-2) will have the separate package. 17:07 < Andor> посоны 17:07 < Andor> я полезен :)

Giver: ну офигеть теперь  (2014-10-01 18:42:48)

Пишу тесты/демку к своему ресту, и тут вылетает эксепшон "Михаил != Юрий", я шоке, оказывается:

Rhino 1.7 release 2 2010 11 17
js> arr=[];

js> print(u);
js: "", line 3: uncaught JavaScript runtime exception: ReferenceError: "u" is not defined.
	at :3

js> (function() { for(var u in [0,1,2]) arr.push(function(e) { print(u); } ) })(); 
js> print(u);
js: "", line 7: uncaught JavaScript runtime exception: ReferenceError: "u" is not defined.
	at :7

js> for(var f in arr) arr[f](0);                                                   
2
2
2
js> 

Как они это сделали? Как и зачем?!


upd: Нашлось решение, оно не менее странное, чем сама проблема, но все же работает.

(function() { for(var u in [0,1,2]) with({u:u}) arr.push(function(e) { print(u); } ) })(); 
    

Giver: сканер  (2014-09-20 16:41:24)

Нужно было очень срочно передать цифровую копию некоторых документов, причем камеры фотоаппарата явно не хватает. Очень быстро раздобыл сканер, правда без шнура, но зато с блоком питания. Съездил за шнуром, купил, подключил. Запустил Xsane, он радостно обнаружил сканер и начал сканировать, головка немного дернулась и я получил изображения кислотного трипа, которое, к сожалению, не сохранил, ибо ждал изображения документа. Поняв что линуксоиды должны страдать я перешел к пункту B.

Пункт B. Открыл виртуальную машину с семеркой, быстренько скачал дрова для висты, благо всего 2 мегабайта, установил, устройство обнаружилось, но вот Paint отказался сканировать. Заглянув в менеджер устройств увидел, что "Устройство не может быть запущено (Код 10)", немного пободавшись с виндой плюнул и запустил Windows XP в том же виртуалбоксе. Дрова для экспи весят аж 200мб, притом столько места даже нет на виртуальном приводе, Попробовал дрова с висты 32битной, но они не стали.

Поняв что я все таки линуксоид и мне все же нужно страдать я полез в гугл искать рецепты для поднятия сканера. Быстро обнаружив на саурсфорже драйвер и скачав его не получил результата, он просто вис. И тут я дотронулся до блока питания — он был просто раскален. И тогда я внимательно посмотрел на характеристики. Оказалось что блок питания выдает только 600mA, а сканер для своей работы требует целых 1350, то есть банально у блока питания не хватало мощи запустить механику и лампу сканера, а контроллер от кислородного электронного голодания дико триповал и показывал цифровой шум.

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

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


Giver: СВОБОДА РАВЕНСТВО ЦВЕТЯЧКА  (2014-03-17 18:11:13)
цветячка

Giver: Primitive Collections  (2014-02-17 14:50:54)

Производительности никогда не бывает мало. Всегда хочется быстрее, компактнее и красивее. В яве сложная ситуация с примитивами. Загвоздка в том, что они есть. И они не объекты. А так хочется иногда карту с целочисленным ключом. И вот в своей разработки применив все мыслимые и немыслимые оптимизации и получив прирост только в 30%, я решил поменять контейнер. Уж тут-то я получу сразу хорошее ускорение. Памяти тоже не хватает, так что и тут должен быть выигрыш.

Для этого я написал небольшой тест. Вот такого плана. У каждой реализации свой API, поэтому примеры весьма отличаются. Но смысл общий.

Map<Integer, Map<Integer, Map<Integer, int[]>>> map;
//Insert
for(Data in : data) {
    Map r = map.get(in.a);
    if(r == null) map.put(in.a, r = new Map());    

    Map k = r.get(in.a);
    if(k == null) map.put(in.a, k = new Map());

    int[] l = k.get(in.a);
    if(l == null) map.put(in.a, r = new int[1]);
    l[0]++;
}
// Walk
int c;
for(Map a : map.values())
    for(Map b : a.values())
        for(int[] k : a.values())
            c++;

Результаты порадовали. Даже картинка не требуется чтобы их понять. Тратить время с подобными коллекциями смысла нет никакого.

Framework - class Insert Walk Memory
JCF - HashMap 1005000 in 5055ms (~0,00503ms) 2794144 in 761ms (~0,00027ms) 301,6Mb
JCF - LinkedHashMap 1005000 in 6446ms (~0,00641ms) 2794441 in 646ms (~0,00023ms) 359,4Mb
HCCP - IntObjectOpenHashMap 1005000 in 5113ms (~0,00509ms) 2793747 in 643ms (~0,00023ms) 355,7Mb
GNU Trove - TIntObjectHashMap 1005000 in 5477ms (~0,00545ms) 2793979 in 3134ms (~0,00112ms) 461,1Mb
fastutil - Int2ObjectOpenHashMap 1005000 in 4979ms (~0,00495ms) 2793682 in 960ms (~0,00034ms) 510,8Mb
fastutil - Int2ObjectAVLTreeMap 1005000 in 7201ms (~0,00717ms) 2793393 in 1054ms (~0,00038ms) 287,9Mb

А еще порадовал размер fastutil — его ярка занимает 16 мегабайт. в два раза больше чем мой проект со всеми зависимостями вместе взятыми.


Giver: Свежий сон  (2014-02-07 22:42:01)

Еду на машине от вокзала, с той параллельной маленькой улочки, где базар. Темно на улице, там плохо освещают. Ближний светит, впереди машина. Подъезжаю к перекрестку на достаточной скорости. Смотрю на приборную панель, а подсветка не горит. Думаю, вот те раз, как так? Выключаю свет, включаю. А он не загарается, и так темно на улице, а я без света и понимаю что вот уже на перекрестке и свет не включается вообще. Закрываю глаза, пытаюсь открыть, а ничего не вижу. И тут до меня доходит, я уснул за рулем! Уснул за рулем и выезжаю на перекресток! Давлю на тормоз и выворачиваю руль вправо, кричу себе: "Проснись! Проснись! Ты спишь!". Просыпаюсь. В кровати.

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

А еще вспоминается цитаты из "записок полусталкера":

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

Сегодня снился странный сон. Иду по какой-то улице, а на заборе огромными буквами написанно - ЭТО ТВОЙ СОH! Приснится же чушь такая...

Опять снился этот мерзкий сон. Какой-то придурок уже третью ночь гоняется за мной и орет что это сон, и что я должен посмотреть на свои руки. Достал уже!!!


Giver: кулинарии пост  (2014-01-17 23:08:23)

У меня есть 2 пакеты морквы, 750 грамм гречки, 5 упаковок муки, пол-солонки и целое множество специй всех сортов и расцветок, а также варенье, кетчуп, ящик яиц, две бутыки чистого кэфира и картофель. Не то что бы это был необходимый запас для зимовки. Но если начал собирать еду, становится трудно остановиться. Единственное что вызывало у меня опасение - это кефир. Нет ничего более беспомощного, безответственного и испорченного, чем кефирные зомби. Я знал, что рано или поздно мы перейдем и на эту дрянь.

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

Начну с моих любимых эльфийчких лепешек.

Ингредиенты: мука, вода, масло растительное. Начинка по желанию (сахар, мак, творог)

В муку добавляем немного соли, растительного масла и размешивая подливаем воду до получения катаемого теста. Тесто разминаем пока не станет однородным или не надоест. После чего раскатываем его. Чем тоньше тем лучше. Смазываем поверхность маслом и кладем немножко начинки (если она есть). После чего складываем пополам и продолжаем повторять эти действия пока не надоест. 5-6 раз минимум. Чем больше, тем лучше. В конце можно отрезать лишние части, но если все делали правильно, получатся прямоугольной формы. Стоит порезать большой лист на много мелких лепешечек.

После этого кладем получившиеся лепешки на раскаленую сковороду и жарим переворачивая пока не будет прожарена вся.

Ура! Лепешки готовы! Можно собираться в дорогу!


Giver: necms progress  (2014-01-17 02:27:33)

Причесал NeCMS, она практически не менялась за последние пару лет. Так что привел в порядок накопившееся. Даже писать на PHP может быть не так плохо если библиотека хорошая и удобная. Починил проблемы которые были, и добавил несколько нововведений.

  • Теперь галерея - системный модуль.
  • Переверстал все на HTML5, теперь я в тренде. (логотип подтверждает)
  • Отломал поддержку IE6, запилил поддержку IE7
  • Комментарии в блоге, оказывается, были сломаны
  • Запоминание имени для комментариев!
  • Новая панель админки: можно посмотреть слева.
  • Можно перейти непосредственно на редактируемый материал не совершая кучи переходов.
  • Куча внутреннего рефактора и чистки, HTML из PHP выносится в стили и т.д.

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

  • Земли — крестьянам, заводы — рабочим!
  • Запилить наконец пагинатор, можно будет не загружать сразу все одной страницей, хотя и все тоже можно будет.
  • Сделать очередной репозиторий кода для NeCMS, чтобы изменения не терялись. Раньше, правда, это не помогало.
  • Поднять несколько очень популярных сайтов на NeCMS, показывая тем самым ее превосходство над другими системами управления контентом.
  • Добавить в галерею свежие фоточки и скриншоты, ведь так много произошло
  • Добавить еще один интересный раздел
  • Ну и думаю пока этого будет вполне достаточно. Заметил что в 2008 и 2009 я сюда писал практически при каждом удобном более-менее интересному поводу, а сейчас совсем мало. Нужно исправляться. Вот публикую тут сегодняшнюю интересную цитату.

    [19:39:03] klukvo4ka: я слышала
    [19:39:18] klukvo4ka: я видела
    [19:39:32] Giver    : я сказала
    

Giver: Снова on-line  (2014-01-11 19:12:21)

Ура! Моя многострадальная днявочка снова в сети. Да еще и под тем же адресом! Внезапно в этом году ей исполняется 7 лет! Конечно даунтайма было много а пишу я сюда редко, но второе весьма зависело от первого, а первое от отсутствия стабильного хостера и/или интернет канала. В конце концов я таки захостился на подоконнике чему несказанно рад! Как вы поняли спонсор комментария - Хостинг "На Подоконнике".

За это время много чего произошло, но описывать я ничего, пожалуй, не буду. Как дойдут руки может выложу каких картинок или готового текста.