Всё гораздо проще, я просто нажал Tab два раза и он (axel) среди прочего вывода оказался где-то в начале списка, вот и вспомнился. Киллер фич там скорее всего нету.
А так мне тоже нравится wget. Особенно закачка страниц с содержимым (картинки, стили, скрипты, и даже просто файлы, ссылки на которые есть на странице).
Есть плюсы и минусы. axel не умеет скачивать torrentы, зато умеет одновременную загрузку файла с разных серверов. А так, их же много там: curl, wget, hget, aria2, nugget, lftp.
bmon — мониторинг активного потребления трафика.
weechat — jabber/matrix/прочий IM-клиент.
at — отложенный запуск команд.
axel — много-поточная закачка файлов. bettercap — швейцарский нож среди снифферов. borg — дедублирующий коллектор бакапов.
dialog — диалоги для ваших скриптов.
espeak — синтез речи из текста (поддерживает русский язык).
exa — стильная замена ls.
xclip xsel — управление буффером обмена с командной строки.
А не могла это быть просто сохраненная кука? Отправление приложения в корзину не должно «трогать» пользовательские файлы с данными. А смена пароля, по идее, не должна отражаться на открытых сессиях. Теории заговора, сюжет для Рен-тв.
Иммутабельные объекты, кстати, в JS тоже уже лет 8 как есть.
А вот private fields очень не хватает. Очень жаль, что до сих пор не работают в Firefox. В NodeJS уже как пол года используются. Также два года ждем нормальной реализации асинхронных конструкторов и деструкторов для классов! Очень надоели костыли.
Ну, дома я не только программирую, я еще люблю порисовать в векторе, у меня до сих пор в строю дешёвейший пятилетний ветеран Wacom CTH-680. Сам удивляюсь, как он до сих пор жив, взял его в 2015 на замену полностью отработанной таблетки Intuos4. На тот момент CTH-680 стоила раза в 2.5 дешевле Intuos4. Сама таблетка по сравнению с Intuos4 вроде хлюпенькая. А живёт в активном юзе уже 5 лет, даже есть кто продают на ebay до сих пор. Без беспроводного модуля обойдётся от $90. Беспроводной модуль стоит столько-же, если не дороже. Так что, могу рекомендовать, таблетка непробиваемая — проверена годами!
У меня два таких кресла ИКЕА, не помню как называется, но не ПОЭНГ. И отличается он съёмным подголовником. Из особенностей мне показалось кресло немного низковатое для стандартной высоты стола. И ещё с каждым креслом прилагались пуфы для ног, которые вообще не зашли, они могут использоваться как отдельная табуретка, но ноги на них держать — слишком высоко.
Блин, под офисом мечты я имел в виду ту телефонную будку, что на пол фотографии, надо было обрезать, конечно, но тогда бы не было понятно что это такое и где оно стоит.
Кстати, я не люблю паласы, я бы даже его не заметил. Но вот этот вроде не плох.
Стул, на котором сидит чел слева — это стулья для конференций. У них есть особенность — возможность складываться один на другой и тем самым не занимать много места. Это, разумеется, накладывает некоторые ограничения на конструкцию стула и не может положительно сказаться на комфорте. Но, конкретно этот стул обладает строением ножек, за которые можно повесить небольшой столик с поворотом. Столик можно использовать для записи в тетради или для ноутбука с небольшой диагональю.
Но даже в случае CGI, гораздо быстрее запустить скомпилированный бинарник, чем интерпретатор
perlcc поставляется вместе с perl. Но скомпилированный код запускается не на много быстрее скрипта. Та проблема требует кастомизации ядра ОС — настроить быстро можно, но на это уходит немного времени, так как это не универсальные настройки, а непосредственно под CGI.
Сам гул и шум не мешает, не мешает и любое движение вокруг тебя.
Мешают люди, которые к тебе обращаются по мелочам. Мешает даже сам факт, что люди могут к тебе обратиться по какому-то пустяку. Особенно, мешают вежливые приветливые люди, выполняющие функцию социальных клоунов, которые не могут пройти мимо тебя не спросив чего-нибудь из вежливости.
И работая в опенспейсах, меня больше беспокоит не столько то, что ты перед собой видишь, а то, что скрыто от твоего взора — то, что происходит у тебя за спиной. Я ненавижу рабочие места, где сзади тебя могут происходить какие-либо события. За моей спиной должна быть стена и ничего большее!
Я тоже до того, как изучил PHP, делал сайты на Delphi. Но, вместе с Web-сервером, никаких CGI.
По статье несколько вопросов.
Про медленный Perl. Тут хочется отметить, что Perl всё же довольно быстр, но в стеке с CGI могло быть что-то не оптимально настроено. Никому не говорите про медленный Perl. Во многих вещах Perl невозможно заменить по параметру скорости выполнения. Например, те же регулярные выражения.
Про NodeJS. Напрасно вы так про JS. Я понимаю, конечно, когда есть неприязнь, например, к ФП. Но JS как сам ЯП ничем особым не выделяется, чтобы прямо совсем быть таким неприятным.
Я бы и сам уже не делал ничего на JS. В двадцать первом веке есть Go. И даже Go медленно но верно сменяет поколение Rust. Но, опять же, я считаю, что бы эффективно программировать на Go и тем более на Rust, хороший большой опыт работы на NodeJS просто необходим. Это моё личное мнение. Был бы рад услышать обратное, если таковые программеры среди нас присутствуют.
Я тоже работаю и читаю чаще на кухне чем в комнате. По поводу отраженного света, есть же встроенные потолочные светильники, выполненные не просто ободом для лампы, а ещё оснащены внешним корпусом (ну, по итогу выглядят как мини-люстры), то есть светят не прямым светом, а рассеянным сквозь янтарный корпус. У меня просто везде потолки очень низкие (2.10-2.20 м), и сам я не очень высокий, но у меня есть большие и высокие товарищи, которые перемещаются по квартире как внутри пещеры (нагибая голову)… Я задавал вопрос из соображений про занимаемый объём кухни, не из соображений освещенности.
Всё равно отделку переделывать, шумоизоляцию ни один застройщик не делает. А она нужна для продуктивной мысли и крепкого сна куда важнее чем умный дом. Хотя ходить по квартире и не включать/выключать свет тоже здорово…
Сил хватило лишь на половину комментариев. Сильно не ругайте если вопрос повторяется.
Собственно, вопрос Автору: почему вы везде используете эргономичные потолочные светильники, (которые собственно, хоть и самые дешевые, но их киллер-фича — они плоские и вообще не занимают полезного объёма квартиры), а на кухне вы используете люстру (которая неэргономичная и вообще, несмотря на её незаюзанный внешний вид, какая-то она как будто по наследству от бабушки)? В этом есть скрытый смысл? То есть, почему бы не использовать на кухне светильники такие же как и везде?
Наверное, не до конца объяснил, нашел свободные 10 минут, чтобы разъяснить подробнее.
Что я имею в виду?
Userscript — это тоже самое что и расширение для браузера, но неофициальное. Поставляется в виде прямой ссылки на файл extension-name.user.js. Если стоит расширение, например, Greasemonkey (самый первый) или Violentmonkey (самый простой) или проприетарный Tampermonkey (самый продвинутый), то оно подхватит ссылку и скачает и сохранит у себя автоматом. Расширение просто запускает нужный JavaScript, когда браузер переходит на страничку, URL которой удовлетворяет регулярному выражению, написанному в заголовках файла userscript.
Что из себя представляет скрипт?
По поводу трёх строчек я конечно перегнул.
Будем считать что мы находимся на странице сообщений.
Нам необходимо:
проскролить тег с сообщениями;
если появился прелоадер, значит конец ещё не достигнут, продолжаем цикл, в противном случае выдаём результат;
через setTimeout() или setInterval() периодами по 100-200мс ожидаем пока не погаснет прелоадер;
когда прелоадер погас, значит сообщения загрузились, получаем их через document.querySelectorAll() и innerHTML;
переходим в начало цикла.
И там остаётся внедрить на страницу кнопочку активации.
Я бы её внедрил прямо на страницу сообщений где-нибудь рядом со смайликами.
const button = document.createElement('button');
button.innerHTML = 'получить все сообщения';
document.querySelector('селектор куда внедряем кнопку').appendChild(button);
button.addEventListener('click', () => { getMessages() } );
И остаётся вопрос — куда выводить результаты работы. Тут можно хоть в консоль, хоть в window.alert(''), можно сделать отдельный div, а можно даже открыть новое окно через window.open('about:blank','_blank');, а можно даже в виде какого-нибудь xml-файла или json-файла для скачки через ссылку в base64.
Ну как бы на словах все просто. Сколько коротеньких строчек кода? Ну может 5-7 или даже 10. Правда?
Ладно. По поводу расширения. Кстати, есть конвертеры userscript -> extension. Код там тот же самый. Ничего мудрёнее нету. Архив надо будет ещё подписать своей подписью PGP или аналогами.
Mozilla премодерирует все новые расширения. Обычно на это уходит пара часов. Чем меньше кода в расширении, тем быстрее его апрувят. На сам Вконтакте им будет пофигу, то есть главное — чтобы не было вредоносного кода.
Последнее расширение, которое я добавлял где-то год назад, (запулил его где-то в обед по московскому времени) Mozilla апрувила минут через 40.
Как расширения, так и userscript прекрасно работают на мобильных телефонах, при условии что там запускается Firefox.
Надеюсь, эта информация поможет. Если будут, вопросы, обращайся, я захожу пару раз в день на Хабру, как будет свободная минута — отвечу.
Я не про API. Я про userscript. А официальный способ — расширение для браузера firefox. Расширения Firefox работают как на десктопах, так и на мобильниках. — И там пользователь уже авторизован, то есть остаётся спрограммировать сами действия, и сделать какую-нибудь кнопочку для активации. Причем в руках будут все инструменты — и скролл сообщений, и автоподгрузка без каких либо запросов, — всё уже спрограммированно самим Вконтакте.
Ну на python тоже неплохо, только код раз в 5 длинее и авторизация через колено… Но, справедливости ради, это хорошая разминка на навыки python.
Вы намеков не понимаете… Скажу прямо. Вы неправильно выбрали средство реализации.
Поясню. Задача, которую вы «решили», не из разряда математических или транслирующих. Проблема то сугубо-пользовательского характера. Всё по инструкции можно автоматизировать, а спрашивать куку браузера от пользователя — это как минимум некорректно. Всё это должно делаться автоматом.
Вот есть бухгалтерша на связи, как раз хочет выкачать из группы рецепты, спрашивает как? Я то ей хоть и могу письмо написать, но общаемся сугубо по телефону, тем более не касается рабочих отношений для обсуждений по e-mail.
То есть, сама задача то нормальная. Но решение мало-воспроизводимое.
А так, на мой взгляд, я дельный совет даю. Если бы вы правильно выбрали средства реализации, то решение было бы в 2-3 строки кода. На 100% могу быть уверен, что меньше одного килобайта. А если пойти по официальному пути, — плюс килобайт файла манифеста. Надеюсь, этот намек вы поймёте.
А так мне тоже нравится wget. Особенно закачка страниц с содержимым (картинки, стили, скрипты, и даже просто файлы, ссылки на которые есть на странице).
weechat — jabber/matrix/прочий IM-клиент.
at — отложенный запуск команд.
axel — много-поточная закачка файлов.
bettercap — швейцарский нож среди снифферов.
borg — дедублирующий коллектор бакапов.
dialog — диалоги для ваших скриптов.
espeak — синтез речи из текста (поддерживает русский язык).
exa — стильная замена ls.
xclip xsel — управление буффером обмена с командной строки.
А вот private fields очень не хватает. Очень жаль, что до сих пор не работают в Firefox. В NodeJS уже как пол года используются. Также два года ждем нормальной реализации асинхронных конструкторов и деструкторов для классов! Очень надоели костыли.
Кстати, я не люблю паласы, я бы даже его не заметил. Но вот этот вроде не плох.
Стул, на котором сидит чел слева — это стулья для конференций. У них есть особенность — возможность складываться один на другой и тем самым не занимать много места. Это, разумеется, накладывает некоторые ограничения на конструкцию стула и не может положительно сказаться на комфорте. Но, конкретно этот стул обладает строением ножек, за которые можно повесить небольшой столик с поворотом. Столик можно использовать для записи в тетради или для ноутбука с небольшой диагональю.
perlcc поставляется вместе с perl. Но скомпилированный код запускается не на много быстрее скрипта. Та проблема требует кастомизации ядра ОС — настроить быстро можно, но на это уходит немного времени, так как это не универсальные настройки, а непосредственно под CGI.
Мешают люди, которые к тебе обращаются по мелочам. Мешает даже сам факт, что люди могут к тебе обратиться по какому-то пустяку. Особенно, мешают вежливые приветливые люди, выполняющие функцию социальных клоунов, которые не могут пройти мимо тебя не спросив чего-нибудь из вежливости.
И работая в опенспейсах, меня больше беспокоит не столько то, что ты перед собой видишь, а то, что скрыто от твоего взора — то, что происходит у тебя за спиной. Я ненавижу рабочие места, где сзади тебя могут происходить какие-либо события. За моей спиной должна быть стена и ничего большее!
По статье несколько вопросов.
Про медленный Perl. Тут хочется отметить, что Perl всё же довольно быстр, но в стеке с CGI могло быть что-то не оптимально настроено. Никому не говорите про медленный Perl. Во многих вещах Perl невозможно заменить по параметру скорости выполнения. Например, те же регулярные выражения.
Про NodeJS. Напрасно вы так про JS. Я понимаю, конечно, когда есть неприязнь, например, к ФП. Но JS как сам ЯП ничем особым не выделяется, чтобы прямо совсем быть таким неприятным.
Я бы и сам уже не делал ничего на JS. В двадцать первом веке есть Go. И даже Go медленно но верно сменяет поколение Rust. Но, опять же, я считаю, что бы эффективно программировать на Go и тем более на Rust, хороший большой опыт работы на NodeJS просто необходим. Это моё личное мнение. Был бы рад услышать обратное, если таковые программеры среди нас присутствуют.
Собственно, вопрос Автору: почему вы везде используете эргономичные потолочные светильники, (которые собственно, хоть и самые дешевые, но их киллер-фича — они плоские и вообще не занимают полезного объёма квартиры), а на кухне вы используете люстру (которая неэргономичная и вообще, несмотря на её незаюзанный внешний вид, какая-то она как будто по наследству от бабушки)? В этом есть скрытый смысл? То есть, почему бы не использовать на кухне светильники такие же как и везде?
Что я имею в виду?
Userscript — это тоже самое что и расширение для браузера, но неофициальное. Поставляется в виде прямой ссылки на файл extension-name.user.js. Если стоит расширение, например, Greasemonkey (самый первый) или Violentmonkey (самый простой) или проприетарный Tampermonkey (самый продвинутый), то оно подхватит ссылку и скачает и сохранит у себя автоматом. Расширение просто запускает нужный JavaScript, когда браузер переходит на страничку, URL которой удовлетворяет регулярному выражению, написанному в заголовках файла userscript.
Что из себя представляет скрипт?
По поводу трёх строчек я конечно перегнул.
Будем считать что мы находимся на странице сообщений.
Нам необходимо:
setTimeout()
илиsetInterval()
периодами по 100-200мс ожидаем пока не погаснет прелоадер;И там остаётся внедрить на страницу кнопочку активации.
Я бы её внедрил прямо на страницу сообщений где-нибудь рядом со смайликами.
И остаётся вопрос — куда выводить результаты работы. Тут можно хоть в консоль, хоть в
window.alert('')
, можно сделать отдельный div, а можно даже открыть новое окно черезwindow.open('about:blank','_blank');
, а можно даже в виде какого-нибудь xml-файла или json-файла для скачки через ссылку в base64.Ну как бы на словах все просто. Сколько коротеньких строчек кода? Ну может 5-7 или даже 10. Правда?
Ладно. По поводу расширения. Кстати, есть конвертеры userscript -> extension. Код там тот же самый. Ничего мудрёнее нету. Архив надо будет ещё подписать своей подписью PGP или аналогами.
Mozilla премодерирует все новые расширения. Обычно на это уходит пара часов. Чем меньше кода в расширении, тем быстрее его апрувят. На сам Вконтакте им будет пофигу, то есть главное — чтобы не было вредоносного кода.
Последнее расширение, которое я добавлял где-то год назад, (запулил его где-то в обед по московскому времени) Mozilla апрувила минут через 40.
Как расширения, так и userscript прекрасно работают на мобильных телефонах, при условии что там запускается Firefox.
Надеюсь, эта информация поможет. Если будут, вопросы, обращайся, я захожу пару раз в день на Хабру, как будет свободная минута — отвечу.
Ну на python тоже неплохо, только код раз в 5 длинее и авторизация через колено… Но, справедливости ради, это хорошая разминка на навыки python.
Поясню. Задача, которую вы «решили», не из разряда математических или транслирующих. Проблема то сугубо-пользовательского характера. Всё по инструкции можно автоматизировать, а спрашивать куку браузера от пользователя — это как минимум некорректно. Всё это должно делаться автоматом.
Вот есть бухгалтерша на связи, как раз хочет выкачать из группы рецепты, спрашивает как? Я то ей хоть и могу письмо написать, но общаемся сугубо по телефону, тем более не касается рабочих отношений для обсуждений по e-mail.
То есть, сама задача то нормальная. Но решение мало-воспроизводимое.
А так, на мой взгляд, я дельный совет даю. Если бы вы правильно выбрали средства реализации, то решение было бы в 2-3 строки кода. На 100% могу быть уверен, что меньше одного килобайта. А если пойти по официальному пути, — плюс килобайт файла манифеста. Надеюсь, этот намек вы поймёте.