Интересно, авторы броузеров об этом в курсе? Ведь броузеры занимаются ни чем иным, как парсингом сайтов, с целью выдать их визуальное представление. Не знали? А так же интересно, знает ли об этом законе некая Ryan Mitchell (кстати отличная тётка, мы переписывались одно время, жаль замуж вышла) автор книги «Web Scraping with Python: Collecting Data from the Modern Web»? И уж совсем интересно, знает ли об этом законе издательство O'Reilly или они издали книгу напрямую призывающую к противозаконной деятельности и дающую по ней подробные инструкции (http://shop.oreilly.com/product/0636920034391.do)?
Чем же шутка? Слишком большие изменения в него вносить не могут, будет всеобщее недовольство пользователей. А к изменениям незначительным изменениям может быть довольно устойчив и достаточно умный парсер и в случае его краха обновиться достаточно легко. Можно сделать даже «тревожную кнопку». Скажем если парсер не смог получить с сайта данные, он сообщает об этом на сайт поддержки и оттуда отправляется смс-ка автору, что мол нехорошие бяки опять что-то поменяли. Таким образом время от изменений на сайте до обновления парсера может вообще измеряться минутами.
Леван, прошу прощения, прочитал бегло и возможно выскажусь не в тему. Но всё-таки не совсем понял, почему Вы так запали на API? Разве нельзя было нормально, по-умному парсить сайт? Ну хорошо, если уж там так всё постоянно меняют, написали бы парсер на каком-то встроенном в программу скриптовом языке, хоть на том же lua. Приложение перед тем как получать данные скачивает с Вашего сайта поддержки новый парсер и пользуется уже им. Парсеры Вы с лёгкостью можете обновлять хоть каждый день. Для изменений на сайте существуют определённые пределы. Да и сами ребята довольно быстро задолбались бы играть с Вами в кошки-мышки. Да, согласен, история сама по себе гадкая. Но справедливости ради отмечу что и Вы в ней оказались не на высоте, отказавшись от инженерного решения. В любом случае искренне желаю Вам удачи и надеюсь что может быть и мой совет Вам как-то пригодится.
С уважением
Евгений.
Прошу прощения что влезаю в разговор, но по-моему это такой вопрос, что численно смоделировать будет проще чем гадать. Если интересно, попробуйте. Сам бы это сделал, но увы, сейчас немного занят с работой.
Спасибо за инфу, даже не знал о такой штуке. Увы, сайт огорчил. В блоге обещают что будет доступен по предзаказу с 15 января 2015 года. А на страничке, что сейчас в середине 17-го не готовы принимать заказы. А я бы такую штуковину очень бы хотел, особенно если это будет в пределах 15-20 тысяч. Блин обидно, хоть самому покупай что-то типа третьей малинки, e-ink экран и собирай. Вы случаем не в курсе, жив ещё проект или нет?
Забавно… Только сегодня(точнее уже вчера) об этом зашла речь(https://habrahabr.ru/company/wrike/blog/330900/#comment_10300708)… Согласен с мужиком на все 146%. У меня с этим всё ещё экстремальнее. Я вообще не могу ничего изучить, если под изучаемый предмет нет абсолютно конкретной и реальной задачи. Причём не для того чтобы показать в портфолио какому-то дяде, а исключительно для себя. Например я так и не смог изучить хаскель, хотя и пытался. Ну просто не было под него никакого реального проекта! И сейчас нет. Зато сейчас с успехом и с удовольствием изучаю скалу, считающуюся значительно более сложным языком, делая на ней проект, на котором собираюсь зарабатывать. Хотя точнее будет сказать делаю проект, параллельно с изучением скалы. Серьёзный недостаток тут в том, что на работу Вас почти всегда принимают как уже готового специалиста и начальство просто не даст Вам участвовать в проекте на чем-то чего Вы не знаете, но хотели бы изучить. Поэтому во-первых учиться приходится «без стипендии». Во-вторых смена сферы деятельности чаще всего сопряжена со сменой работы. Мне тут правда немного легче. Сейчас сижу без работы и сам выбираю чем мне заниматься.
Нда… На моей памяти такое было только в одном проекте. Но не на интеле конечно. Был в конце 90-х начале 2000-х некий камень под названием NUON. Довольно симпатичный. Дешёвый, 4 ядра, vliw-инструкции, низкое потребление. Жаль так и не взлетел. У Тошибы был на нём проект DVD-плеера. Не знаю выпустили ли его в конце концов в серию. Тогда мы портировали под него игру The Next Tetris (хит 98-го года кстати). Сама игра тогда была только под PlayStation 1, причем написана была не то что с привязкой к архитектуре, а даже к конкретному компилятору gcc! И такие подарки были равномерно разбросаны по всему коду. Так что игру фактически не портировали, а писали с нуля. Вот тогда пришлось этого дела и хлебнуть. Глюки были и в версии OpenGL (она там тоже была довольно нетривиальной, например сидела на двух ядрах), и в самом процессоре. Вобщем интересные были времена. Есть что вспомнить…
Да нет, я же не утверждаю что книжки читать не надо вообще. Иначе как вообще узнать хоть что-то об изучаемом предмете. Разве что с помощью телепатии :) Я лишь о том, что параллельно с чтением обязательно нужно на изучаемом языке что-то делать(хотя у меня скорее наоборот, чтение книжек идёт параллельно с работой как основой). Причем именно РЕАЛЬНОЕ, нужное по работе или хобби. Тут две фишки. Во-первых реальная задача Вас очень сильно мотивирует. Во-вторых выполняя реальную работу, Вам гораздо легче убедить себя, что все трудности преодолимы и незначительны. Хотя не отрицаю, что у моего подхода есть и недостатки. Например обучение делается несколько бессистемным. Кстати из той же оперы. В давние времена(ещё в СССР), когда я занимался мордобоем, тренер нам советовал не пренебрегать уличными драками, хотя конечно и с некоторой осторожностью и умом. Утверждая что без такой практики обучение бесполезно. С программированием вобщем-то по-моему абсолютно то же самое.
Да, наверно так и сделаю. Сначала хотел писать один в один, но увы, не получается. Чем больше знакомлюсь со скалой, тем сильнее код на ней расходится с параллельным проектом на Dart.
Простите что влез, но попробуйте всё-таки по моему пути. Поставьте себе какую-нибудь не очень сложную, но тем не менее абсолютно реальную задачу. Например сверстать динамическую веб-страничку для своего сайта. И сделайте это на scala.js. Это абсолютно та же самая scala. Только компилируется она не в классы jvm, а в javascript. Так что пока работаете, будете изучать скалу. Просто для себя я уже понял, что книжки читать бесполезно. Новый язык можно освоить только если пишешь на нём что-то абсолютно реальное, не учебное. Нужное либо тебе самому, либо то, за что тебе платят деньги на работе. Хотя мне в данный конкретный момент легче. Сижу без работы и сам выбираю чем мне заняться :)
Спасибо, но это опять же книжка с упражнениями. Ну не получается у меня учиться по таким вещам! То ли возраст виноват (мне послезавтра стукнет 56), то ли характер. Мне для обучения нужна ЗАДАЧА. Та, которую я сам заинтересован решить. Или на работе, или мой собственный проект. Learn You a Haskell for Great Good я разумеется читать пытался. Но быстро во-первых заела текучка, во-вторых просто потерял интерес. Ну не было под хаскель никакого реального проекта! Впрочем и сейчас нет. Скале тут повезло куда больше. Поэтому сейчас с огромным удовольствием её изучаю, без отрыва от абсолютно реального проекта на ней :)
Вообще-то я для своих домашних рукоблудийделий, обычно юзаю либо jetty либо поднимаю http прямо на сокетах, если нужно кому-то отдать что-то очень простое и предельно компактное. Про Play 2 просто слышал много хорошего и хотелось бы попробовать. Но в этой задаче увы, только классика, только трэш и хардкор. Я просто связан по рукам и ногам условиями использования — дешевым хостингом на apache с php+mysql. Так что хоть люблю php не более чем javascript, придется всё делать на нём. К счастью задача такова, что подавляющая часть работы будет на клиенте. Серверная часть тут скорее просто мост между клиентом и базой данных. Впрочем спасибо, akka-http обязательно попробую. Тут была задумка поторговать на форексе с применением всего того, чему научился за последние 10 лет. А поскольку я люблю веб-интерфейсы, хорошая серверная часть у меня всегда востребована.
Вобщем даже не знаю что мне теперь делать. Обещал написать статью, значит надо выполнять. За одно может и инвайт на любимый хабр дадут, что тоже было бы не лишним. Но О ЧЁМ ПИСАТЬ, убей Бог не знаю. Умом понимаю что Dart бьёт Scala.js по всем статьям и с разгромным счётом. Но сердце моё отныне и во веки веков принадлежит scala… Трудная ситуация. Что посоветуете?
P.P.S. Что ещё заметил. Пожалуй никому не стал бы рекомендовать скалу в качестве первого языка функционального программирования. Уж больно много свободы она собака такая даёт. Для продакшена это разумеется бесценное качество. Но оно же делает язык непригодным в качестве учебного. Приходится очень жестко себя контролировать чтобы не халтурить и по возможности писать функционально. Начинать наверно надо бы с чего-то типа хаскеля. Но с ним у меня увы, не сложилось. Читать книжки и делать упражнения не интересно, а реальной задачи под него к сожалению не было. Так что развиваюсь я наверно по далеко не лучшему пути. Ну что же, значит судьба моя такой :)
P.S. Серверная часть у меня на php. Тут увы, выбирать просто не из чего. Мой Большой Проект (а нынешний малый проект это часть большого), предназначен для нищей публики, выбирающей дешевые хостинги. Разумеется предпочел бы ту же скалу или яву с вкусняшкой типа Play 2. И с этим связано пожалуй единственное серьёзное огорчение, которое мне доставила скала к сегодняшнему дню. Ну не хочет её плагин жить под PhpStorm, хоть веником убейся! С Dart всё пушисто и шоколадно. Ставлю его в PhpStorm, создаю Dart-проект в виде минимального веб-приложения, добавляю php и вперёд. Бряки работают одновременно и в коде на php и в Dart. А вот со скалой приходится запускать Idea. И память собака жрёт нипадеццки, и переключаться из одной IDE в другую тоже лишнее рукомашество. В остальном доволен как слон. Кой-то веки получил игрушку, которая меня всерьёз увлекла и от которой явственно сносит крышу.
Бэкграунд у меня 30 лет программирования. Правда в основном низкоуровневого и околожелезного. Функциональщиной никогда не занимался, хотя и интересовался. Но просто не было задачи хотя бы под тот же хаскель. Но во всяком случае занимаюсь скалой имея некоторую базу. Ну а киллерфичей для меня стала сама скала. Давно ей интересовался. Мне очень нравится огромное количество научных и data science-библиотек, поддержка в Jupyter и наличие инструмента для хардварного дизайна (https://chisel.eecs.berkeley.edu/index.html), но было как-то не досуг. Когда же я узнал, что на этом ещё можно писать и веб-странички, это переполнило мою чашу терпения. Сейчас приехал с дачи и сходу написал фигню, принимающую в качестве параметров и Int и Double, но ничего кроме них. А потом другую фигню, позволяющую описывать все мои манипуляции с div-ами на веб-страничке на на чём-то, напоминающем естественный язык, причем родной рабоче-крестьянский(кириллица utf-8), а не буржуйский! Просто ради прикола. Вобщем последний раз мне так рвало крышу лет 20 назад, когда активно писал на Forth-е. Великий язык, однозначно. Хотя спроси меня сейчас на чём писать для продакшена человеку желающему работать, а не получать удовольствие, без сомнения порекомендую всё-таки Dart.
Да уж… Я с ним успел забыть когда в последний раз WingIDE открывал. Всё делается прямо на месте. Совершенно исключительная штука. Сейчас увлечён языком Scala, даже посматриваю в его сторону как на замену питону. И одно из самых приятных моих открытий тоже было то, что Jupyter его поддерживает. Не представляю себе как раньше без этого жил.
С уважением
Евгений.
блудийделий, обычно юзаю либо jetty либо поднимаю http прямо на сокетах, если нужно кому-то отдать что-то очень простое и предельно компактное. Про Play 2 просто слышал много хорошего и хотелось бы попробовать. Но в этой задаче увы, только классика, только трэш и хардкор. Я просто связан по рукам и ногам условиями использования — дешевым хостингом на apache с php+mysql. Так что хоть люблю php не более чем javascript, придется всё делать на нём. К счастью задача такова, что подавляющая часть работы будет на клиенте. Серверная часть тут скорее просто мост между клиентом и базой данных. Впрочем спасибо, akka-http обязательно попробую. Тут была задумка поторговать на форексе с применением всего того, чему научился за последние 10 лет. А поскольку я люблю веб-интерфейсы, хорошая серверная часть у меня всегда востребована.