Просто описанные в моем посте примеры всем более-менее известны и можно сравнивать решения разных студентов.
Ну если так, тут трудно не согласиться. Действительно если задача сравнивать знания, то проекты должны быть какими-то типовыми. Реальные проекты для этого слишком разнообразны.
Возможный минус вашего проекта со стековым процессором: он возможно не был конвейерным (или был?)
Пожалуй скорее был чем не был. Не на уровне 8086 конечно, но предвыборка была. Подробности я сейчас по прошествии 14 лет не очень помню, но помню что после команды перехода у меня выполнялся слот задержки (как в MIPS). А ещё меня в те времена сильно прикалывала идея vliw (незадолго до этого пришлось поработать с так и не взлетевшим процессором NUON), и мой мог выполнять одновременно до 4-х команд (3 в машинном слове + возврат), если в одном слове задействовались соответствующие блоки. Можно сказать такой упрощенный вариант микропрограммирования.
Но это вопрос спорный — а вы можете выписать список возможных учебных проектов, который с ващей точки зрения был бы более удачным?
Честно говоря нет… Была у меня идея ещё до появления планшетов, когда только-только начались наладонники, сделать подобную машинку на FPGA. С графическим экраном, чем-то вроде uLinux на борту, и очень серьёзной хакерской закваской. Превращаемое в осциллограф, логический анализатор, средство перехвата беспроводного трафика и т.п, что пользователь сочтёт нужным. Если бы такую штуковину удалось сделать и выпустить в виде не слишком дорогого(общедоступного) устройства, то да, был бы кладезь учебных проектов на самые разные темы. Но увы, не хватило ни времени ни денег. Сейчас интересуюсь машинным зрением и анализом в реальном времени. Хотелось бы сделать что-то летающее, способное к ориентации на местности, выделению и сопровождению целей и т.п. Но тоже останавливает отсутствие времени и денег. А в плане источника учебных проектов тема тоже вполне богатая. А вообще я считаю что научиться чему-либо можно только выполняя совершенно реальные практически полезные проекты. Не знаю, может это только у меня так мозги устроены, но для меня лично это медицинский факт.
Рискую быть запинанным ногами, а так же покрытым вечным позором и ненормативной лексикой, однако Ирина мне понравилась значительно больше предлагаемых идей проектов. Ибо встает главный вопрос — зачем. Неужели нельзя найти какой-то совершенно реальный проект, приносящий конкретную, осязаемую пользу? Я например проектировал свой процессор один единственный раз ещё на древней Spartan 2 для устройства многоканальной высокоскоростной записи сигналов. У меня он управлял буферной памятью на 1 мегабайт и записью на жесткий диск. Процессор несложный. Стековый безадресный, 16-разрядный с 32 командами. 3 команды в машинном слове + 1 бит кодировал возврат из подпрограммы. По производительности (работал на 25 мегагерцах) рвал как тузик грелку 8-битную Atmel AVR, которую я сначала думал применить в проекте. Написал для него ассемблер с задаваемой простым текстовым файлом системой команд (проект постоянно менялся и нужно было соответствующим образом подстраивать ассемблер), выдающий выходной код прямо в виде vhdl-файла инициализированной блочной памяти. В результате был доволен как слон, ибо проект упростился вообще до безобразия. 1 FPGA, 2 микросхемы статической памяти, IDE-разъем для подключения жесткого диска. Всё. Может и студентам попрактиковаться на чём-то подобном? Ведь реальных задач для FPGA куча, а использование встроенного процессора может сильно их упрощать.
А зачем? В статье и так достаточно подробностей, чтобы соорудить такую игрушку самостоятельно. Единственная трудность, Вам придётся либо купить лицензированную рулеточную машину, либо очень долго торчать в казино, сканируя ротор (причем второе предпочтительнее). Без набора статистики тут увы никак. Если хотите более популярного изложения, почитайте у Джека Лондона, как Смок и Малыш обыграли рулетку. У Шеннона было в принципе то же самое. Только более тонкое средство наблюдений, позволяющее видеть более тонкие погрешности рулеточной машины. Единственное серьёзное замечание. В рулетке, если Вы ставите на красное или черное, казино имеет определенное статистическое преимущество. Потому что кроме красного и черного есть ещё зеро. И если Ваша игрушка будет давать статистическое преимущество меньшее чем это, Вы всё равно будете проигрывать.
Поменял сейчас typescript на Scala.js и дико этим доволен. Что же касается популярности js, причина мне кажется в бешеном удобстве броузера, как среды исполнения программ(что его тащат в бакенд, согласен, тупизм). У меня понимание этого пришло 4 года назад и было это так. Был в одном из моих проектов некий алгоритм компрессии звука(одна из многочисленных вариаций adpcm), который мне нужно было портануть с adsp-2185 на FPGA. В ходе портирования я обнаружил в старых исходниках ошибку. Когда начальство осознало, что ошибка там действительно имеет место быть, меня попросили написать декодер, по возможности минимизирующий последствия этой ошибки в кодере. Для этого разумеется пришлось по ходу работы рисовать кучу графиков и их анализировать, что я делал на матлабе. А потом возникла задача представить мои результаты совсем уже высокому начальству. Спрашивается что делать? Из кабинета оно выходить не изволит. Что, матлаб ему на комп ставить? Тогда я взял в зубы d3.js и за пару дней написал веб-страничку, загружающую мои файлы с тестовыми данными и строящую графики. Причем интерактивные, с кучей фич, что на матлабе сделать сильно труднее. И мне это настолько понравилось, что я забросил QT, JavaFX и т.п, и пишу сейчас (для своих целей)графические интерфейсы только броузерные.
Вам, видимо, никогда не приходилось делать нормальный не одноразовый парсинг сайтов
Вы правы, не приходилось. Баловался с сайтом избиркома. Но во-первых это редко, только после интересных для меня выборов, что не чаще раза в год, во-вторых там мало что меняется.
Менять разметку, естественно, можно так, что внешний пользователь ничего не заметит, а тот, кто пишет парсер сойдёт с ума от постоянной модификации.
А вот тут хотелось бы примеров. Самое неприятное что я теоретически себе представляю, это javascript. Но и он в конце концов преобразуется в dom-дерево. И если парсер имеет некоторую модель броузера с js-движком, то и с этим справится. В остальном я слабо себе представляю, как можно изменить разметку так, чтобы визуально ничего не изменилось, а у парсера возникли проблемы. Хотя да, конечно смотря у какого парсера. Без полноценной модели броузера любые игры со стилями и джаваскриптом будут смертельны. Но положим на борту есть такая модель. Что тогда?
Парсинг в обход API и создание нагрузки на сервис была одной из причин блокировки Левана.
Тааак! Вот с этого места пожалуйста подробнее. Если мне не изменяет мой склероз, парсер заглатывает html-код странички, переваривает её как-то внутри себя и выдаёт какой-то результат. Это простейший случай, бывает что-то приходится получать через джаваскрипты, но в первом приближении можно принять. Позволю себе скромно вопросить, где же тут нагрузка на сервис? Точно такую же нагрузку создаёт любой броузер. Может тогда и броузеры надо заблокировать? А то нагружают понимаешь, бяки такие! Кроме того заблокировали именно API. Как человеку могли заблокировать API за то что он пользуется парсингом, до меня немного не доходит. Опять-таки скромно вопрошаю, Вы статью читали внимательно?
Там многабукафф и всё не по-русски. Тема не настолько меня заинтересовала, чтобы разбираться в подробностях. Однако смею предположить, что скарпили с целью какого-то агрегирования и дальнейшего использования. Здесь же (повторяю это ещё раз !) данные парсятся внутри клиента и никуда из него не уходят. Более того, само такое приложение может быть написано как расширение броузера. И получится что сайт как ему и положено крутится в броузере. К robots.txt это тоже не имеет ни малейшего отношения, это не поисковик и не агрегатор. Это просто что-то вроде фильтра для просмотра сайта. Не более. Если уж это запрещено, запрещать придётся например и блокировщики рекламы. Не слишком ли круто получается?
Ну и совсем уж в качестве вишенки на торте. Не знаю на чём писал своё приложение Леван (скорее всего на Obj-C или swift раз речь идёт об AppStore). Но если бы что-то подобное предложили написать мне, скорее всего я сделал бы это именно в виде веб-приложения. Т.е. фактически просматривал бы сайт с помощью броузера, но только некоторым хитрым способом. Ну и какие были бы ко мне претензии в этом случае?
Я не знаю какое именно лицензионное соглашение в данный момент, но если авторы не хотят отдавать контент — следующим шагом будет явный запрет на парсинг / использование данных в любых целях кроме личного использования.
Простите за резкое слово, но это уже явный бред. Запрет на парсинг это то же самое что запрет на просмотр. Ведь как я уже говорил, броузер сам по себе парсит сайт чтобы его отобразить. И даже если правообладатель разрешит парсить свой сайт с помощью броузера, то как быть со всякими расширениями, дополнениями и плагинами, которых в современных броузерах туева хуча? Ведь каждое из них тоже как-то парсит контент. И кстати ничего не стоит написать парсер о котором шла речь выше именно в виде дополнения к броузеру. Использование данных в каких-то целях кроме личных тут тоже не прокатывает. Ибо пользователь здесь именно и использует их в сугубо личных целях и никак иначе. Спрашивается какие претензии?
Простите, какой копирайт ??? Сайт предназначен для просмотра на клиентском устройстве. Какое программное обеспечение при этом должно использоваться — нигде не сказано. Выдирать фотки или 3d-модели это совсем другое дело. Там происходит перемещение ресурса из одного окружения в другое. Здесь же всё остаётся в пределах клиентского устройства и никуда на сторону не уходит. Так что предъявить тут нечего от слова совсем.
Интересно, авторы броузеров об этом в курсе? Ведь броузеры занимаются ни чем иным, как парсингом сайтов, с целью выдать их визуальное представление. Не знали? А так же интересно, знает ли об этом законе некая 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 (она там тоже была довольно нетривиальной, например сидела на двух ядрах), и в самом процессоре. Вобщем интересные были времена. Есть что вспомнить…
Ну если так, тут трудно не согласиться. Действительно если задача сравнивать знания, то проекты должны быть какими-то типовыми. Реальные проекты для этого слишком разнообразны.
Пожалуй скорее был чем не был. Не на уровне 8086 конечно, но предвыборка была. Подробности я сейчас по прошествии 14 лет не очень помню, но помню что после команды перехода у меня выполнялся слот задержки (как в MIPS). А ещё меня в те времена сильно прикалывала идея vliw (незадолго до этого пришлось поработать с так и не взлетевшим процессором NUON), и мой мог выполнять одновременно до 4-х команд (3 в машинном слове + возврат), если в одном слове задействовались соответствующие блоки. Можно сказать такой упрощенный вариант микропрограммирования.
Честно говоря нет… Была у меня идея ещё до появления планшетов, когда только-только начались наладонники, сделать подобную машинку на FPGA. С графическим экраном, чем-то вроде uLinux на борту, и очень серьёзной хакерской закваской. Превращаемое в осциллограф, логический анализатор, средство перехвата беспроводного трафика и т.п, что пользователь сочтёт нужным. Если бы такую штуковину удалось сделать и выпустить в виде не слишком дорогого(общедоступного) устройства, то да, был бы кладезь учебных проектов на самые разные темы. Но увы, не хватило ни времени ни денег. Сейчас интересуюсь машинным зрением и анализом в реальном времени. Хотелось бы сделать что-то летающее, способное к ориентации на местности, выделению и сопровождению целей и т.п. Но тоже останавливает отсутствие времени и денег. А в плане источника учебных проектов тема тоже вполне богатая. А вообще я считаю что научиться чему-либо можно только выполняя совершенно реальные практически полезные проекты. Не знаю, может это только у меня так мозги устроены, но для меня лично это медицинский факт.
А зачем? В статье и так достаточно подробностей, чтобы соорудить такую игрушку самостоятельно. Единственная трудность, Вам придётся либо купить лицензированную рулеточную машину, либо очень долго торчать в казино, сканируя ротор (причем второе предпочтительнее). Без набора статистики тут увы никак. Если хотите более популярного изложения, почитайте у Джека Лондона, как Смок и Малыш обыграли рулетку. У Шеннона было в принципе то же самое. Только более тонкое средство наблюдений, позволяющее видеть более тонкие погрешности рулеточной машины. Единственное серьёзное замечание. В рулетке, если Вы ставите на красное или черное, казино имеет определенное статистическое преимущество. Потому что кроме красного и черного есть ещё зеро. И если Ваша игрушка будет давать статистическое преимущество меньшее чем это, Вы всё равно будете проигрывать.
Вы правы, не приходилось. Баловался с сайтом избиркома. Но во-первых это редко, только после интересных для меня выборов, что не чаще раза в год, во-вторых там мало что меняется.
А вот тут хотелось бы примеров. Самое неприятное что я теоретически себе представляю, это javascript. Но и он в конце концов преобразуется в dom-дерево. И если парсер имеет некоторую модель броузера с js-движком, то и с этим справится. В остальном я слабо себе представляю, как можно изменить разметку так, чтобы визуально ничего не изменилось, а у парсера возникли проблемы. Хотя да, конечно смотря у какого парсера. Без полноценной модели броузера любые игры со стилями и джаваскриптом будут смертельны. Но положим на борту есть такая модель. Что тогда?
Тааак! Вот с этого места пожалуйста подробнее. Если мне не изменяет мой склероз, парсер заглатывает html-код странички, переваривает её как-то внутри себя и выдаёт какой-то результат. Это простейший случай, бывает что-то приходится получать через джаваскрипты, но в первом приближении можно принять. Позволю себе скромно вопросить, где же тут нагрузка на сервис? Точно такую же нагрузку создаёт любой броузер. Может тогда и броузеры надо заблокировать? А то нагружают понимаешь, бяки такие! Кроме того заблокировали именно API. Как человеку могли заблокировать API за то что он пользуется парсингом, до меня немного не доходит. Опять-таки скромно вопрошаю, Вы статью читали внимательно?
Простите за резкое слово, но это уже явный бред. Запрет на парсинг это то же самое что запрет на просмотр. Ведь как я уже говорил, броузер сам по себе парсит сайт чтобы его отобразить. И даже если правообладатель разрешит парсить свой сайт с помощью броузера, то как быть со всякими расширениями, дополнениями и плагинами, которых в современных броузерах туева хуча? Ведь каждое из них тоже как-то парсит контент. И кстати ничего не стоит написать парсер о котором шла речь выше именно в виде дополнения к броузеру. Использование данных в каких-то целях кроме личных тут тоже не прокатывает. Ибо пользователь здесь именно и использует их в сугубо личных целях и никак иначе. Спрашивается какие претензии?
С уважением
Евгений.