Pull to refresh
30
0
Денис @kastigar

User

Send message
Зачем скан? В России, например, достаточно ФИО, серии и номера паспорта (чтоб в билет вбить). А дальше задача проводника проверить владельца билета.
Ну насколько я понимаю junior вакансию найти практически не реально. Очень редкая вакансия, большинству нужны уже достаточно опытные люди, обучать не мейнстрим языку не выгодно. Нужно учиться, писать проект какой-нибудь, получать опыт. Тогда больше шансов найти. Сейчас сам ищу. В Украине вообще плохо с этим. Появилась мысль пропагандировать scala в некоторых софтверных компаниях, может кто захочет попробовать.
Ага, жуки получают единый разум и захватывают мир )
Верно, но в алгоритме и задано «найти первое решение». Вот он эти 45 секунд и обрабатывает все «зацикленные решения». Вот размеры уровней:
Level 1: 1
Level 2: 3
Level 3: 5
Level 4: 15
Level 5: 27
Level 6: 79
Level 7: 145
Level 8: 417
Level 9: 771
Level 10: 2193
Level 11: 4071

Хотя после запуска я понял ваше недоумение: программа выполнилась за 1 сек, вместо 0 (у sbt таймер с округлениями). Это никак не 45 сек. До этого я пускал с дампом этих уровней, выполнялось долго, но похоже тут проблема в выводе огромных данных в консоль. Могу лишь предположить, что либо в хаскелле всё плохо со списками, либо автор тоже выводил какой-то дамп.
ЗЫ еще не совсем понятно, что именно делается за 45 секунд. если отключить проверку на то, что следующее состояние уже было ранее, то лодка по кругу будет бесконечно возить одно и то же.


Не совсем так. Это поиск в ширину (как уже написали). Если проверку не делать, то на следующий уровень добавляется больше потенциальных решений, которые на свой следующий уровень добавят ещё больше потенциальных зацикленых решений, и программе придётся тоже их обрабатывать, пока не найдётся решение. С проверкой, очередь вырастает до 4-х элементов максимум (вот тут дамп моего решения), а так вообще держится на 2х-3х элементах. Без проверки, там безумные цифры.
И как результаты? Как по времени?
да, и под ddwrt и openwrt есть разные способы не забивать wi-fi, или вообще стримать только на необходимый ethernet порт. Но у меня htpc подключён к сети по wi-fi. Да и вообще мало ли возникает необходимость смотреть IPTV по wi-fi. udpxy прекрасно решает эту проблему, можно спокойно смотреть по буку и htpc одновременно.
Промахнулся, вот мой ответ.
Можно с помощью igmp-proxy. Но с таким вариантом есть траблы с вайфай. Как минимум на ddwrt так было, но насколько помню, это связано не с прошивкой, а с устройством multicast
Как-то пытался сделать похожую схему. Только на тот момент у меня все файлы и dlna сервер были на компе. Использовал mediathomb (mt). Решил попробовать завернуть IPTV на телевизор через mt. Начитался, что mt умеет не просто файлы стримать но и пускать процессы и стримать результат (есть куча разных примеров транскодеров с ffmpeg). Решил сделать так же с IPTV — ffmpeg читает поток и транскодит его в понятный телевизору формат. Но так и не добился положительных результатов, телевизор просто отказывался это показывать, хотя сам транскодинг работал на ура. В итоге сейчас у меня неттоп c xbmc(всё таки самсунговская оболочка и рядом не стоит с xbmc), а IPTV транслируется через udpxy на роутере. Сейчас посмариваю в сторону LiveTV билда xbmc и tvheadend, но не уверен получится ли пустить tvheadend на роутере (на ddwrt не вышло, щас стоит openwrt, на нём ещё не пробовал).
P.S. кста, dlna по сути простой http, а udpxy транслирует по http. возможно получится завернуть IPTV с помощью udpxy, такую схему я не пробовал.
О, так это можно будет делать умную стиральную машинку для умной одежды?
Ну началось. Я вам показал ваш пример на twisted/python. Я не хочу начинать холивар node.js vs twisted. Я хочу заставить вас задуматься, а подходит ли javascript для асинхронного программирования, хочу вызвать желание посмотреть на другие инструменты. Может какой-нибудь из них вам покажется удобнее и не придётся изобретать «комфортный стиль кода», а просто брать и писать.
Да, знаю, сорри, глупое предложение получилось :) Имелось ввиду «инструментов»
Вот блин, умеете уговаривать. Я на twisted не писал HTTP аппликухи и с mysql не работал, но приблизительно это будет выглядить так:
@defer.inlineCallbacks
def processRequest(request):
  dataset = Dataset()
  count = yield db.query('SELECT COUNT(id) FROM books')
  // заполняем dataset
  books = yield db.query('SELECT * FROM books LIMIT ' + dataset.limit + ' OFFSET ' + dataset.offset)
  // заполняем dataset
  meta = yield db.query('SELECT * FROM bookData WHERE bookId IN (' + dataset.ids.join(', ') + ')');
  // ... заполняем dataset
  defer.returnValue(Render(dataset));

Насчёт response не уверен, но должно быть так, достаточно просто вернуть объект типа Response. В крайнем случае будет выглядить как у вас: второй аргумет и вызов .write()
Для вас возможно, но мне последовательная запись привычнее «лапши» или объекта с N методов.
Я не говорю что python идеальный претендент для асинхронного языка, там своих костылей хватает, но пока смело могу объявить 1:0 в пользу twisted перед node.js в номинации «асинхронный стиль» (как минимум в моём личном рейтинге).
Асинхронно можно писать на многих языках, но на одних код будет простым, красивым и понятным, а на других придётся изобретать свои стили, чтобы хоть как-то оформить получившуюся кучу. Возможно такого языка ещё нет, возможно мы просто про него не слышали.
Конечно, уже пошёл писать :) Приведу лишь пример с одного блога:
@defer.inlineCallbacks
def someFunction():
    a = 1
    b = yield deferredReturningFunction(a)
    c = yield anotherDeferredReturningFunction(a, b)
    defer.returnValue( c )

Отличие от синхронного стиля в двух вещах: @defer.inlineCallbacks аннотация и yield перед вызовом асинхронного метода.
Честно, не знаю. Но когда возникают такие вопросы/проблемы/холивары, на ум приходит только одно — а тот ли инструмент используется?
На сегодня я пользовался только twisted и знаю, что благодаря питоновским генераторам можно писать асинхронный код в привычном последовательном стиле. Ещё есть akka, erlang и уверен, что куча других фреймворков для асинхронного программирования, но их не юзал.
Ничего не имею конкретного против асинхронной модели node.js, но очень похоже, что javascript не лучший кандидат для асинхронного программирования.
Может просто javascript не очень подходит для асинхронного стиля?
В Linux эта проблема решена (как минимум в Ubuntu или Nautilus + FileRoller). Правый клик -> распаковать здесь. Если архив содержит в корне более одного файла, то будет создана папка с именем архива и файлы поместятся туда. Если один файл/папка то просто «распакуется здесь».
Казнить нельзя помиловать

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity