Предыстория
У меня есть убогий дешевый планшет на Windows 10 с одним гигабайтом оперативной памяти и 16 гигабайтами места, в пределах которого установлен Windows 10. Чтобы Windows 10 мог хоть как-то скачивать и устанавливать обновления — я скрутил размер файла подкачки в ноль и файл pagefile.sys перестал занимать драгоценные гигабайты.
После этого я с удивлением обнаружил, что для просмотра более-менее крупных сайтов на этом планшете невозможно использовать ни Chrome, ни Internet Explorer, ни даже старую Opera 12. Все они пытаются пару раз показать сайт, перезагружают его снова (он, по видимости, не влезает в настоящую оперативную память без файла подкачки) и выдают после второй попытки загрузки сообщение о неудаче.
Почему при размере исходного HTML-кода сайта в несколько сотен килобайт — компьютер с гигабайтом оперативной памяти не может его отрисовать?
По всей видимости, потому что сайт состоит из разношерстных элементов, включающих в себя скрипты JavaScript (или даже VB) (которые нужно выполнять после загрузки и по событиям типа «движение мыши над элементом» и др), CSS-стили, фреймы с другими страницами, медиа (картинки, музыку, видео и др.). При загрузке сайта браузер грузит основной код сайта, а затем начинает подгружать связанные файлы, выполнять и готовить к выполнению скрипты, загружать и отображать картинки, подгружать стили, просчитывать для каждого элемента страницы получившийся финальный стиль после наложения нескольких стилей, располагать все элементы на странице и только потом дает пользователю посмотреть сайт.
Я хотел бы быстро и сразу посмотреть сайт (загрузить только его HTML-код), причем только интересующие меня элементы:
- на одной странице я хочу посмотреть только текст
- на другой текст со ссылками
- на третьей только картинки, но не все, а выборочно по одной загружая их вручную
- на четвертой я хочу почитать вдобавок комментарии
- на пятой почитать код Java-скриптов, выключив отображение всего остального.
И я в ряде случаях не хотел бы при просмотре сайтов:
- видеть окна/панели с рекламой в виде от фото и простых анимаций до полноценного озвученного видео,
- видеть окна «подпишись на рассылку от нашего сайта»,
- видеть окна «включи уведомления от нашего сайта» или, по старинке, «сделай нашу страницу стартовой»,
- видеть окна «разреши геолокацию чтобы знать где ты, наш клиент, находишься»,
- видеть окна «извините, мы на этом сайте используем cookies»,
- передавать cookies.
Как это сделать? Ясное дело, что нужно написать еще один браузер и использовать его!
Сначала мне казалось что все будет просто. Берем и пишем парсер HTML-кода. Грузим теги, разбиваем на части, выводим текст вне тегов как текст, а если встретили, например, a href=«habr.com», то выводим это как ссылку. «Делов-то!» — подумал я и сел за Delphi.
Реализация выбора элементов для просмотра
Список элементов, которые можно включить для просмотра или выключить, разросся за время разработки браузера.
Тут появились и сам текст сайта, и границы table-таблиц/div-слоев, и выделение в отдельные строки текста с «акцентами» (жирного, курсива и с другими выделяющими тегами), ссылки и якоря-закладки, медиа (картинки, музыка, видео), связанные файлы «link ...», пометки-комментарии "!--… --", а также script-сценарии, style-стили, form-формы, meta-метаданные с возможностью показа их кода. Для каждого из типов элементов можно выбрать цвет и жирность текста. Также можно выбрать готовую тему оформления, включающую в себя определенную раскраску элементов, а также стиль текста.
Реализация общих настроек
Верхняя часть окна браузера со временем покрылась настройками и стала напоминать панели с кнопками MS Office. Там были и флажки, и выпадающие списки, и кнопки вызова функций типа «Закладки» или «История».
Там можно было, например, выбрать имя и размер желаемого для просмотра шрифта как в текстовом редакторе. Также стало можно загрузить сторонний растровый PCF-шрифт (PaintCAD Font) и отрисовывать картинку этим шрифтом. На скриншоте загружен шрифт sc60micro.pcf, срисованный вручную с браузера старого телефона, кто-то, наверное, еще помнит тот wap-браузер из сименсов 15-летней давности:
Реализация настроек приватности
Прямо под общими настройками расположились настройки приватности:
Флажком Referer можно отключить передачу адреса, откуда вы пришли на веб-страницу. Флажком Cookie — отключить куки.
А с помощью поля User-Agent можно выбрать кем притвориться — одним из компьютерных или мобильных браузеров, а можно даже google/bing/yandex/mailru-ботом. При выборе одного из вариантов — в поле справа отобразится текст для отправляемого на сервер user-agent http-заголовка. В этом поле можно и вручную свой user-agent ввести вместо выбора одного из предлагаемых браузером вариантов.
Работа с загружаемыми файлами: панель объекта и панель файла
Если браузер встречает, например, ссылку на картинку — он пишет ссылку вида «Изображение: адрес». По клику на нее — ссылка переносится в панель объекта.
В зависимости если включена полная экономия трафика или экономия трафика на загрузках — то в поле информации об объекте выводится информация о файле.
Пользователь сам решает скачать файл или нет (например, если он сидит через мобильный интернет и ему жалко трафика, а файл оказался большим — то можно не скачивать его). Скачать файл можно кнопкой скачивания справа от поля объекта.
Если же экономия выключена, то файл автоматически будет скачан в папку download рядом с EXE-шником браузера и:
- открыт в программе по умолчанию если это безопасный файл (картинка, музыка, видео),
- перенесен в поле файла и выделен в открывшемся окне Проводника если файл потенциально опасен или неизвестен браузеру.
Панель файла:
Она включает в себя поле с именем сохраненного файла и кнопки:
- открытия в программе по умолчанию,
- открытия папки с файлом с фокусом на файле,
- открытия файла в самом браузере JustCode,
- открытия файла в блокноте notepad.exe.
Главное меню для сенсорного экрана
Клик по значку браузера в левом верхнем углу открывает меню со значками 32х32 пикселя, дублирующее многие функции главного окна. Это меню имеет достаточно крупные по высоте пункты, что позволяет гораздо легче нажимать их пальцем, чем при прицеливании в мелкие флажки типа кодировки UTF-8 или пункта выбора режима экономии трафика.
Работа с исходным кодом сайта и автоматизация
Если нажать Ctrl+E или выбрать аналогичную команду в главном меню, то полный исходный код сайта будет помещен в область информации об объекте.
Там в строке «Поиск» можно ввести текст и поискать его кнопками с лупой (первое вхождение, следующее вхождение, последнее вхождение) в исходном коде.
Другие красочные кнопки под полем поиска позволяют (у многих кнопок JustCode есть всплывающие подсказки с описанием их функций):
- удалить все выше или ниже выделенного/найденного текста,
- превратить %xx коды в символы,
- превратить JavaScript коды типа \n в символы,
- вставить переносы перед/после каждого найденного текста, аналогичного введенному в «Поиск»-строку,
- удалить все строки, не содержащие текста, введенного в «Поиск»-строку
- проверить все оставшиеся в области строки как http-ссылки на файлы,
- загрузить измененный исходный код сайта в JustCode для просмотра,
- и даже открыть редактор программ (скриптов) (Ctrl+F5), который позволяет в автоматическом режиме «нажимать» описанные кнопки командным путем.
Редактор собственных JustCode-программ
В этом окошке редактора, например, открыт шаблон, который дербанит код страницы с YouTube-видео до отдельных ссылок на видео и аудио.
Понятное дело, что есть онлайн сервисы, которые делают это же. Но редактор позволяет выполнить такой скрипт без задействования сторонних сервисов и «посмотреть youtube», не запуская java-скрипты страницы с видео.
Написанные скрипты можно сохранить в файлы и эти файлы «забиндить» (назначить) на кнопки быстрого запуска чтобы потом запускать из главного окна браузера по Alt+1, Alt+2… Alt+0 без открытия окошка редактора программ.
Работа с формами
При встрече формы в тегах браузер отображает форму как ссылку «Форма»:
При нажатии открывается специальное окно, которое отображает содержимое формы (показана форма залогинивания в почту mail.ru):
Если включить сверху флажок «Расширенный режим», то можно увидеть сам код формы, а кнопка «Отправить» станет не отправлять страницу, а подготавливать URL и (в случае необходимости) POST-данные для отправки и отображать их в соответствующих полях. И можно вручную поправить их, если нужно, и после нажатия на «Отправить и перейти» отправить указанные данные на сервер.
Если же нажать кнопку «Создать программу отправки данных», то будет создан скрипт, устанавливающий текущий URL и вызывающий отправку данных — т.е. эмулирующий ввод данных на веб-странице в форму и их отправку.
При этом POST-данные также указываются внутри URL, но отделяются двойным вопросительным знаком. Т.е. одинарный "?" — это GET, а двойной "??" — это POST.
Аналогичную «ссылку» на отправку введенных данных формы методом GET (с одинарным "?") или методом POST (с двойным "??") можно получить, если нажать в редакторе форм кнопку «Скопировать URL и POST-данные в буфер как ссылку».
Просмотр файлов в браузере
После скачивания непонятного файла может возникнуть необходимость посмотреть «что там внутри». Поэтому в браузер встроены три режима просмотра:
- как HTML-кода с парсингом и рендером (F12),
- как текста в Windows/DOS кодировке (Shift+F12),
- как 16-ричного представления с кодами и текстом (Ctrl+F12).
Выбираются они в меню или вышеупомянутыми сочетаниями клавиш с Shift/Ctrl+F12.
Если выбрать тему MonoDOS/MonoDOS2 или загрузить DOS PCF-шрифт (и включить флажок «DOS-кодировка» в меню PCF-шрифтов), или при любом шрифте выбрать кодировку OEM_CHARSET, то можно просматривать старые текстовые файлы с псевдографикой прямо в браузере.
По Ctrl+F12 можно посмотреть hex-представление файла и, например, по заголовку понять что мы скачали или изучить как устроен внутри, например, exe-файл блокнота.
Заключение
Оказалось, что сделать браузер это не просто написать парсер. Этому браузеру еще не хватает многого.
Например, распаковки полученных данных от сервера. Поэтому, например, сайт games.mail.ru выглядит как набор рандомных байтов, т.к. сайт не слушается и присылает запакованные данные даже при просьбе в http-заголовках присылать только незапакованные.
Также браузер не умеет отправлять файлы в формах, умеет только данные форм как «application/x-www-form-urlencoded».
Также с ним не зайдешь на заскриптованные сайты типа instagram. Там будут только скрипты, которые должны подгружать контент.
Но с ним можно читать сайты новостей и сидеть на форумах даже на слабом планшете и на любом Windows (95, 98, 2k, XP, Vista, 7, 8, 10, правда HTTPS-сайты на старых Windows могут не фурычить если алгоритмы типа SHA2 не поддерживаются операционной системой, т.к. не были известны на момент ее разработки), выборочно грузить картинки и тут же смотреть их в любимой программе просмотра картинок, просматривать скрипты сайтов и иногда читать забавные комментарии их разработчиков, следить за изменением структуры сайтов (вы сразу заметите что добавился какой-то блок рекламы или лишний баннер, если каждый день читаете один и тот же новостной портал).
(переносы по словам пока не завезли).
Скачать поделие для тестов
Весит порядка 500 килобайт.
Скачать можно по ссылке blackstrip.ru/jc.zip
Комментарии (334)
slimlv
01.09.2019 22:10+2Links2 видели?
blackstrip Автор
01.09.2019 22:26Но мой разматывает сайт в линию, все оформление пропускает вообще, поэтому он скачивает только исходный HTML-код сайта и все. Ни одного стороннего файла не качает. А если б я как Links2 делал оформление — то пришлось бы стили таки скачать дополнительно из css-ов прикрепленных к веб-странице. Поэтому мой, наверное, сильнее экономит трафик.
А так, конечно, видел другие текстовые браузеры.ledocool
01.09.2019 09:34Вроде бы links2 не умеет в css. Ну и даже если умеет, то есть links (первый) и w3m.
CrazysAlien
01.09.2019 22:18+2гуглоХром тоже когда-то был очень маленький, шустрый и нетребовательный, но потом что-то пошло не так… ;)
androidovshchik
01.09.2019 09:12+1Может быть веб стал таким жирным и неуклюжим? Потому что, например, у лисы схожие симптомы, и не думаю, что разработчики браузеров настолько бездарны, чтобы скатывать на нет свои продукты
WannaCode
01.09.2019 10:57+2После того, как я отправил свой Хром в небытие и скачал Лису, то производительность серьезно повысилась. (правда, не в плане потребления памяти)
DarkNews
02.09.2019 09:09Как?
Я даже специально еще раз проверил, с секундомером, у меня свежая лиса, без расширений, что стартует, что загружает страницу медленнее чем хром с 5 расширениями, как? На одном SSD установлены, в одних условиях запускаются.
При этом памяти хром жрет больше, хотя и не в разы.
У лисы еще анимации такие, лично у меня создают ощущение медлительности процессов.
Не хотел переходить, но нужен второй браузер, но чет лиса прям отталкивает, ни одного плюса найти не могу( ибо с памятью и производительностью проблем нет, я бы хрому с радостью ресурсы х2 бы дал, за еще 15% ускорение всех процессов).WannaCode
02.09.2019 15:13У меня в Хроме анимация часто превращалась в слайд-шоу. Особенно на Ютубе и в ВК. В Лисе ни единого лага.
apro
02.09.2019 19:13Как?
Думаю дело в разных видеокартах. firefox использует "ускоренный" с помощью видеокарты рендеринг только на некоторых версиях ОС и с определенными видеокартами.
popov654
03.09.2019 16:09+1У меня HDD, а не SSD, но Хром с 2-3 лёгкими расширениями стартует за 5-6 секунд, а Лиса мгновенно. Возможно, на SSD разница была бы меньше, но факт есть факт.
А во-вторых, у Хрома есть совершенно кошмарный баг, связанный с выделением текста в урлах в инструментах разработчика при редактировании атрибутов видаstyle="background: url('https://example.com/image.jpg')"
. Если вкратце, то при попытке выделить URL внутри атрибута браузер сбрасывает режим редактирования во всех случаях клика «внутри» URL, кроме одного: нужно попасть указателем мыши пиксель в пиксель справа от конца последнего символа урла. Чуть сместишься, и всё, входить в режим правки по новой. Эта проблема существует уже кучу версий (точно больше полугода), и её никто даже не думает фиксить.
Причём этот баг проблемный не столько для разрабов (ну серьёзно, как часто вам надо копировать урлы из отладчика при разработке сайта?), сколько для пользователей: я часто таким образом вытаскиваю для сохранения картинки из контейнеров, реализованные через background).
Кроме того, у Лисы чётче шрифт после доводки настройками, и симпатичнее (на мой личный вкус) форма вкладок.DarkNews
03.09.2019 16:22Жесть, HDD это боль, потому что у меня хром с кучей вкладок меньше половины секунды стартует, задолбался пока замерял.
Лиса же почему то тратит на это 1.2-.1-3 секунды.
Лично для меня у хрома есть плюс, который не перебивается ничем, это гугл хром, гугл аккаунт, в котором по сути вся твоя жизнь.
Поэтому вещь безальтернативная, даже если бы были вещи, которые мне бы мешали, хотя их в общем то почти и нет.
Mingun
01.09.2019 11:59+3Да ладно, когда это он таким был? На слабых машинах (мы же про слабые машины?) прямо на старте адски тормозил: был в разы медленнее той же Opera 12, а ресурсов (памяти) жрал непомерно больше…
mapron
01.09.2019 16:16Может быть речь о совсем ранней версии хрома, когда он еще был khtmlw в прошлом тысячелетии?)
p.s khtmlw(idget) -> KHTML -> WebKit -> BlinkMingun
02.09.2019 17:32Про самую раннюю версию и речь: поставить протестировать на свой комп (уже сильно устаревший к тому времени: Celeron 1700 МГц, памяти 256 Мб, видеокарту и материнку уже не помню, вроде GeForce 440MX) как только он вышел, но чуда ожидаемо не случилось. Через 5 минут он был снесён и больше я о нём никогда не вспоминал.
jaguard
01.09.2019 18:14-1В версии 1.0, например, он загружался практически мгновенно. Странички тоже быстро грузил — но тогдашний веб, еще не испорченный обильным жаваскриптом, любой браузер переваривал нормально.
Jogger
01.09.2019 18:14Не был. Опере(старой) он проигрывал в сухую.
popov654
03.09.2019 16:16Ну, в версиях около 35-45 Хром был шустрее Оперы, особенно на тяжёлых сайтах. Причём не только шустрее 12-ой, но и шустрее 11-ой. Впрочем, на очень лёгких страницах Опера скорее всего работала быстрее, да.
Я например помню, как оптимизировал по скорости очень тяжёлый сайт, и оптимизировал его именно под Оперу. Но заказчик тестил через Хром. И когда я впервые его Хромом открыл (после всех оптимизаций, когда улучшить уже было нечего без потери функционала), то получил прирост отзывчивости раза в полтора по ощущениям. То есть оно всё ещё не летало, но уже работало ощутимо лучше.
P.S. Я всё ещё ностальгирую по старым Операм и до сих пор их фанат, но что правда то правда, увы.Jogger
03.09.2019 16:41+1Вы знаете, я довольно вредный пользователь, и я периодически тестирую софт, и если что-то лучше, чем то, что я использую — я перехожу. Так вот, у хрома такого этапа не было.
Однако, тут следует заметить, что впечатления от пользования могут РАДИКАЛЬНО меняться в зависимости от железа, и даже версии ОС. То есть вполне возможен вариант, что на слабом железе опера будет выигрывать, а на топовом — будет медленнее.
И кроме того — всё действительно может зависеть от сайтов, которыми часто пользуешься. Нисколько не исключаю, что вы пользовались какими-то особо тяжёлыми сайтами, которые в хроме открывались лучше, чем в опере. Но главным образом я бы всё же списывал это на железо, см. выше.
MSC6502
31.08.2019 23:46Э-хе-хе. Если бы разработчикам Хрома сказали — чтоб работал на 1 ГБ ОЗУ и процессоре 1 ГГц и другим не мешал, да 10 вкладок держал и быстро переключался между ними, а то уволим нафиг вообще — был бы результат. А так — нет ограничений, так хоть 128ГБ ОЗУ прикрути — работать не будет. Где ТЗ, где приёмо-сдаточные испытания? Нету их. Так и будем страдать и вспоминать ранние версии html, где были только текст и картинке. А для 90% сайтов другого и не надо.
Zibx
01.09.2019 01:55Сейчас оптимизация производится по CPU. Это значит что мы можем на js писать страшно неоптимальный говнокод, а браузер его слопает и не подавится. Но не всё так плохо — с глобальным наступлением эры WebAssembly ситуация может поменяться.
Mabu
01.09.2019 09:39-1Это не поможет.
WebAssembly — это байт?код для встроенного интерпретатора. Если программист написал на яваскрипте говнокод, то он так и оттранслируется в говнокод на WebAssembly. Объекты, используемые яваскриптом, точно такие же, какие будут использоваться и WebAssembly. Строки точно также будут ссылаться на своих родителей и держать их, занимая память.
alsoijw
01.09.2019 12:32+5Срочно присылайте своё резюме гуглу, а то там лучшие специалисты разобраться не могут. (сарказм)
Браузер — интерпретатор. При очень сложных алгоритмах конечно можно выжать какой-то процент экономии, но в первую очередь нужно оптимизировать сами страницы.
Так и будем страдать и вспоминать ранние версии html, где были только текст и картинке. А для 90% сайтов другого и не надо.
Раньше были страницы, сейчас — веб приложения. Или вы хотите ради каждого веб-магазина отдельную программу ставить?Areso
01.09.2019 13:24В нулевых веб-приложения использовали скриптовые языки на стороне сервера, клиенту отдавался всегда готовый html, а JS-а практически не было на страницах.
Ради интереса открыл один из форумов на phpbb, на котором я сижу, щелкнул страничку — 2,4 МБ. Потом щелкнул эту страничку — 27 МБ. Разница в 10 раз!alsoijw
01.09.2019 18:22В нулевых веб-приложения использовали скриптовые языки на стороне сервера, клиенту отдавался всегда готовый html, а JS-а практически не было на страницах.
А функционал какой был? Сейчас ожидается, что страницу не нужно будет перезагружать на каждое действие пользователей(например онлайн карта), плюс страница в состоянии как-то отреагировать на действие, например вывести автодополнение. При этом она ещё и будет нормально отображаться и на всяких смартфонах.
Безусловно можно и сейчас делать компактные страницы, только на это потребуются деньги, которых у заказчиков явно не будет.
Плюс избавляться от полифилов как только, так сразу, но тогда даже palemoon может отвалиться, не говоря уже про другие варианты.popov654
01.09.2019 20:01+1Сейчас ожидается, что страницу не нужно будет перезагружать на каждое действие пользователей(например онлайн карта), плюс страница в состоянии как-то отреагировать на действие, например вывести автодополнение. При этом она ещё и будет нормально отображаться и на всяких смартфонах.
Всё, что вы описали выше, совсем не требует десятки мегабайт кода, и может быть реализовано довольно легковесно (кроме карты, но это сторонний сервис, плюс там всё равно больше весят тайлы, чем сам код).
А для смартфонов вообще лучше делать отдельный мобильный поддомен — и объём кода десктопной версии сократится (а мобильную версию вообще следует оптимизировать особенно сильно, чтобы на любых калькуляторах работала), и шансов ловить баги будет куда меньше (на самом деле, единственный потенциальный баг, который останется — неверный автоматический выбор сервером версии сайта для клиента).
Плюс избавляться от полифилов как только, так сразу, но тогда даже palemoon может отвалиться, не говоря уже про другие варианты.
Полифилы, даже будучи идеально написанными и не глючащими, много весят и жрут прилично ресурсов. Проще вообще не использовать по возможности новые фичи языка, если они не особо критичны.alsoijw
02.09.2019 01:06Всё, что вы описали выше, совсем не требует десятки мегабайт кода, и может быть реализовано довольно легковесно (кроме карты, но это сторонний сервис, плюс там всё равно больше весят тайлы, чем сам код).
Покажите мне эти мегабайты кода. У меня ВНЕЗАПНО скачивается аж 2.8 Мб на этой странице, при том что большинство из них это картинки. Где выигрыш по сравнению с тем форумом?
А для смартфонов вообще лучше делать отдельный мобильный поддомен
Только вот переадресацию с этого поддомена на десктопный почему-то забывают.Areso
02.09.2019 10:48justboris Вопрос не про то, сколько скачивается, а про то, сколько это занимает в памяти.
Для Хрома: F12->Memory->Heap Snapshot, в Огнесиле также.
К тому же, нет необходимости в «десятках мегабайт» JS кода, чтобы браузер начал глючить на не топовом оборудовании.
Вот отличная статья на эту тему: medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4
Иллюстрация оттуда:
popov654
03.09.2019 16:57Интересно, под чем были разработчики гугл ньюз, если допустили такое. Я так понимаю, единицы изменения — милисекунды? То есть 20 секунд на Galaxy S7 я должен созерцать начальный экран с короткими вырезками главных событий, прежде чем я смогу что-либо открыть или прокрутить? Браво, это шедевр :)
justboris
04.09.2019 01:232 секунды же, first contentful paint, то есть время, когда отрисовался первый контент. 20 секунд – это на загрузку всех второстепенных перделок. Зачем они нужны – это уже отдельный хороший вопрос.
popov654
03.09.2019 16:22Покажите мне эти мегабайты кода. У меня ВНЕЗАПНО скачивается аж 2.8 Мб на этой странице, при том что большинство из них это картинки.
Потому что Хабр — хороший, достаточно оптимизированный сайт. Тут уже был топик про новый интерфейс GMail, там уже всё не так радужно. Да что там далеко ходить, возьмите любое современное расширение под любой браузер. Там графики почти нет. Основная логика — 5-10 процентов объёма, остальное — толстенные библиотеки, большая часть из которых даже ни разу не используется…
Только вот переадресацию с этого поддомена на десктопный почему-то забывают.
Для прямого захода с десктопа, или где? Не понял сути проблемы, если честно
sumanai
02.09.2019 23:04кроме карты, но это сторонний сервис, плюс там всё равно больше весят тайлы, чем сам код
Карты, по крайней мере от яндекса, жрут кучу ЦПУ при небольшом количестве кода. Да и вообще, по памяти и потреблению процессора 1кб JS кода можно приравнять к 50кб картинок.
uhf
01.09.2019 13:59+1Или вы хотите ради каждого веб-магазина отдельную программу ставить?
Так давно уже — посмотрите на Android.
popov654
01.09.2019 19:56Зачем мне веб-магазин, который не может работать как совокупность страниц с серверной логикой?
bodqhrohro
02.09.2019 03:06Страницы никуда не делись. Документация, например — обычный HTML зачастую. Даже простые сайты, типа DuckDuckGo и StackOverflow, недалеко от классического DHTML ушли. Что хорошо для web-приложений (многопроцессность, сэндбоксинг, оптимизация под частый ререндер за счёт ресурсопотребления) — плохо для простых страниц. Браузеры, шустро гоняющие сложнейшие web-приложения, не могут тем временем похвастаться возможностью без огромного оверхеда по оперативке открыть десятки вкладок с простыми страницами и быстро ворочать ими.
popov654
03.09.2019 17:04Вы наверное про какие-то чисто профессиональные приложения (например, финансы или проектирование)? Разве такое делают под браузеры в первую очередь? Я думал, обычно всё же под десктоп.
bodqhrohro
03.09.2019 19:25Десктопные приложения как таковые умирают. Во-первых, их проще спиратить, а облачный сервис не спиратишь без взлома сервера. Во-вторых, web-приложения повышают мобильность рабочих мест: проще обмениваться наработками с коллегами, меньше возни для обеспечения работы из дому. В-третьих, web-приложения проще делать кроссплатформенными: даже якобы десктопные приложения всё чаще делаются поверх Electron, NW.js и т.п. — кодовая база почти единая для всех платформ, и разработчиков на это дело найти проще, чем на более низкоуровневые кросс-платформенные технологии типа Qt или Mono.
FForth
03.09.2019 19:39Да, с этим можно согласиться.
Как пример yEd — редактор визуальных схем написанный на Java сейчас и есть в виде Веб приложения
YemSalat
04.09.2019 06:25Так и будем страдать и вспоминать ранние версии html, где были только текст и картинке. А для 90% сайтов другого и не надо.
Дану, постоянно вижу комментарии в духе "- обновите дизайн, уже давно не начало нулевых!" о сайтах в старом стиле.
namikiri
01.09.2019 00:18А исходники?
blackstrip Автор
01.09.2019 00:27-5проприетарное ПО, исходники у меня)
вот, например, код из парсера для тега «a»:
inside:=false; tag:=uppercase(tagpure); spacep:=pos(' ',tag); if spacep=0 then tagname:=tag else tagname:=copy(tag,1,spacep-1); if (not inscript) and (tagname='A') then begin ParseTag(tagpure); //если флажок Ссылки или флажок Якоря включен if checkBox9.Checked or checkBox10.Checked then begin linktext:=Lg.GR(24); linktag:='HREF'; link2text:=Lg.GR(25); link2tag:='NAME'; needlink:=true; needdbr:=true; end; end;
namikiri
01.09.2019 00:30+3Даже проприетарное ПО должно быть написано хотя бы с форматированием кода.
blackstrip Автор
01.09.2019 00:34-5Я обычно когда запутаюсь, то считаю бегины/энды и судорожно ищу где же я лишний вписал. А еще после длинного блока оставляю коммент после каждого end типа
end; //for i end; //for j end; //if checkBox1.checked
Потому что мне лень табулировать.deseven
01.09.2019 01:46+2Вы немного недотянули, но похоже.
alexdoesh
01.09.2019 06:43Seek Python instead of this.
bodqhrohro
02.09.2019 03:12Не исключено, что это питонист так и пишет, чтобы этот мусор перед глазами не маячил ;-) Желательно тогда ещё перенос строк в редакторе выключить и за пределы экрана его выкинуть, чтоб только горизонтальной прокруткой добраться можно было.
aklimano
02.09.2019 11:51Я сам тоже питонист, но, так сказать, приезжая в другую страну, я не продолжаю говорить по-русски.
bodqhrohro
02.09.2019 14:12Так это не русский, это русский акцент.
aklimano
02.09.2019 15:15/* осторожно, не читать любителям английского
No if you will say on English language how you say on Russian, some will understand, what you wanted say, but all others will want you kill. */
Я про то, что писать на Java используя подобие PEP8 и игнорируя гайдлайны джавы — неправильно, так как ухудшает читаемость для людей, которые будут работать с этим кодом дальше и ожидать, что в джава-файле код отформатирован как джава (что и произошло на той картинке).
В примере выше ведь тоже понятно, о чем речь — а ведь некоторые люди так и говорят, и их даже понимают — но никто же не будет спорить, что при чтении проще понимать грамматически правильные предложения, а при разговоре проще понять чистый английский (в том числе чистый американский английский), чем пробиваться сквозь тонкости диалектов и акцентов?
Gryphon88
02.09.2019 16:03/* осторожно, не читать любителям английского
Спасибо, вспомнил пиратские игры из 90х-начала 00х, когда для прохождения квеста приходилось переводить обратно.
maisvendoo
01.09.2019 04:19+3Ну тогда идите лесом с Вашим кодом и Вашим проектом, если Вам лень соблюдать элементарные правила вежливости по отношению к другим людям, смотрящим Ваш код. Мой минус к статье только за это Ваше высказывание. И карму минус, дабы неповадно было писать на айти ресурсе «мне лень»
blackstrip Автор
01.09.2019 07:55-3I don't care. Rela-a-ax, take it e-e-easy. Я по приколу кусок кода размером с три строки выложил чтоб «удовлетворить» любопытство любителей open source. И даже тут недовольные нашлись, so funny. Берите, это открытый код, используйте в своих проектах, вы же это любите. Могу в конец этого кусочка лицензию дописать если нужно.
У меня представление об открытом исходном коде как о вечно незакрытой двери в квартиру. Когда спрашивают «а для чего же ты оставляешь дверь открытой?» опенсорс-товарищи отвечают «ну может добрые люди зайдут и мебель мне принесут, поставят, или бытовую технику». Хотя у меня одно представление «оставил дверь открытой — все спукрали, это Россия, детка».
Вот вам заодно еще код для обработки тега IMG чтоб вас хватил сердечный приступ. А минус на вашем профиле у меня уже стоит, видимо уже достучались до меня в предыдущих обсуждениях.
if (not inscript) and (tagname='IMG') then begin ParseTag(tagpure); s1:=''; s2:=''; s3:=''; for k:=0 to length(nams)-1 do begin if nams[k]='WIDTH' then s1:=Form3.DeQuote(vals[k]); if nams[k]='HEIGHT' then s2:=Form3.DeQuote(vals[k]); if nams[k]='ALT' then s3:=Form3.DeAmper(vals[k]); end; if checkBox3.Checked then begin imgtext:=''; if (length(s1)>0) or (length(s2)>0) then begin if length(s1)=0 then s1:='???'; if length(s2)=0 then s2:='???'; imgtext:=s1+' x '+s2; end; if (length(s3)>0) and (s3<>'""') then begin if length(imgtext)>0 then imgtext:=imgtext+', '; imgtext:=imgtext+s3; end; if length(imgtext)=0 then imgtext:=Lg.GR(11) else imgtext:=Lg.GR(11)+' ('+imgtext+')'; imgtext:=imgtext+': '; imgtag:='SRC'; needimg:=true; needdbr:=true; end; end;
Пойду поиграю в WoW Classic. Из-за таких как вы хабр превращается в набор коротких статей о том, как кто-то написал очередные три строки кода на ноунейм-языке. А, представьте, ведь когда-то тут были творческие заинтересованные люди, а не закомплексованные запуганные любители правил и оформлений кода. Но все изменилось лет 5 назад, может раньше.AllexIn
01.09.2019 10:00-1У вас странное представление об OpenSource. Почти всё самое крутое что есть сейчас в ПО — основано на опенсорсе.
Да, если вы хотите зарабатывать, делать OS надо с осторожностью.
Во всех остальных это странно.
Security through obscurity не работает. Совсем. Так что вы не закрыли квартиру дверьб, вы бумагу вместо двери натянули и смеетесь над теми, кто бумаге не вешает, а просто оставляет дверь открытой.blackstrip Автор
01.09.2019 11:04-14В случае java или C# (особенно без обфускации) можно вернуть исходные коды, но для win32 платформы (не важно Delphi, C++, ассемблер или еще какой язык) исходники обратно не получишь в стадии «просто собери и запусти», т.к. на выходе процессорные инструкции в exe-файле.
Поэтому закрытие исходного кода означает что никто не упрет часть проги чтобы сделать свою аналогичную, никто из конкурентов не упрет прогу целиком чтобы сделать аналогичную вредоносную с целью компрометации оригинальной. Один единственный разработчик — и он отвечает за качество, не работает ПО — вопросы к нему, полезное ПО и нравится — спасибо ему.AllexIn
01.09.2019 11:08+9Ваш код ценности не представляет. Кому надо будет повторить — возьмет Links с нормальным оформлением и уже OS.
А сломать ПО — доступ к сорсам не нужен. Любой зловред посмотрите из 2000х, которые модифицировали ПО как сами захотят.
Не говоря уж о миллионе хаков для игр и ПО, которые без доступа к сорсам их расширяют(Тот же Mental Omega поражает воображение, если начать разбираться какими хаками там всё сделано).androidovshchik
01.09.2019 11:11+6Для тех, кто высокомерно думает о своем коде, приготовлен отдельный котел)
blackstrip Автор
01.09.2019 11:22-18Вопрос «для кого не представляет». Для меня — представляет. Поэтому я принял решение закрыть код. Какие еще могут быть вопросы?
Имхо, открытый код придумали ленивые кодеры, копипастящие все и вся из чужих проектов в свой проект, именно поэтому их код не представляет никакой ценности, т.к. это франкенштейн из кучи чужих проектов. Молодцы те, кто это продвинули — это надо было так объегорить кучу людей «делайте, старайтесь и выкладывайте просто так» — и народ повёлся. Теперь тем, кто это продвинул, можно безнаказанно тырить чужие проги, не париться дизассемблировать, понимать, разбираться, а просто брать готовые исходники и использовать у себя. Удобно чо. Правда в результате такого зоопарка исходники превращаются в редкостное и нормальный человек в них и разбираться не будет, тысячи форков от Васей и Петей из 6Б — кому они нужны?
Отлаженный, вылизанный и быстроработающий код — всем нужен. Но он закрыт. Так что пользуйтесь результатами работы зоопарка.AllexIn
01.09.2019 13:21+10Несмотря на то, что я полностью поддерживаю ваше право публиковать софт под любой удобной вам лицензией, ваши утверждения про OS — полный бред.
blackstrip Автор
01.09.2019 13:32-7— Квадрат гипотенузы равен сумме квадратов катетов
— Несмотря на то, что гипотенуза существует, ваше утверждение про сумму квадратов — полный бред
Без аргументов — всегда легко.AllexIn
01.09.2019 13:34+8Нельзя контраргументами побороть мнение основанное ни на чём.
Вы не приводили аргументов, чтобы их можно было контраргументами победить.
Вы несете бред, я констатирую что это бред.
Буду аргументы — может контраргументы появятся.blackstrip Автор
01.09.2019 13:39-10Слив засчитан. Разговор слепого с глухим.
Вон с лурка почитайте, например, там подобное хорошо описано lurkmore.to/Open_source
Выводы одни: если открыто — то упрут и всё. Дописывать и помогать (качественно, а не через одноклассников из 6-го бэ) будут только для самых лучших проектов, остальное просто выкладываешь «забирай кто хочет» и всё, выхлоп нулевой. Тогда зачем это делать? Любителей халявы много, но я не собираюсь их кормить.dominigato
01.09.2019 13:56+6А что случится если у вас «упрут» как вы выражаетесь? У вас чего-то станет меньше?
Или вы в туалете тоже каждый раз плачете когда сливаете воду и расстаетесь с частью себя?blackstrip Автор
01.09.2019 14:09-6Вот описаны варианты в этом комментарии: habr.com/ru/post/465709/#comment_20573969
1) просто стырят часть проги чтобы использовать как свою — одно дело алгоритм пузырьковой сортировки расшарить друзьям, а другое дело большой кусок большой проги. М.б. он мне послужит в коммерческом направлении еще. И мне не нужны конкуренты уж точно.
2) конкурирующий товарищ/коллектив сделает аналогичную моей прогу на основе моих исходников, но с вредоносным кодом внутри. Раздаст всем, а потом признается что прога шпионит, чтобы опорочить мое честное имя =) Или не признается и будет собирать инфу, а потом кто-то ее активность посмотрит и скажет «ба, там же кейлоггер» и буду я доказывать что я не я, лошадь не моя, особенно если проект выстрелит.
Пока прогу не уперли — она моя, все лавры мне, вся ответственность на мне. Все красиво и хорошо.
А когда уперли — лежит хрен знает где, выпускает билды хрен знает кто, один вариант работает так, другой эдак, третий никак, жаловаться некому, разброд и шатание) прямо как при разработке игры Life is Feudal:
— вы выложили новый билд, я не могу поставить мебель в дом
— я не занимался домами, я деревья сделал зато, я Вася из седьмого Б, а домами Маша занимается, если вообще занимается.
В итоге MMO закидана дерьмом в стиме, отзывы отрицательные, все лагает, не пашет, не фурычит и только злит бедных пользователей. Зато автор игры Бобик классно наварился на лохах.
store.steampowered.com/app/700030/Life_is_Feudal_MMOdominigato
01.09.2019 14:18+31. Если это легко сделать и это кому-нибудь надо, вас обойдут конкуренты неважно что вы там будете делать. Если это сложно сделать и это кому-нибудь надо, то достаточно поставить нужную лицензию. Если это никому не надо, то и смысла прятать нет. Типичный синдром «собака на сене».
2. Если код открытый, то «товарищ» должен открыть свой код тоже, и будет видно что там внутри. Если он будет распостранять какую-то закрытую прогу, то вашего имени там и близко не будет. Какие-то странные фантазии.
А вот я не уверен что ваш код не собирает какие-то данные и не отправляет их в ФСБ. Или не устанавливает кейлоггер. Или не майнит биткоины. Или еще что-нибудь. Чем докажете? Честным пионерским?blackstrip Автор
01.09.2019 14:24-1Ничем. Просто не используйте ее. Если вам в каждую прогу надо посмотреть перед использованием — то это не ко мне, я не доктор) Тогда уж и Windows-а бояться надо, он то уж точно шпионит. Сидеть в линуксе всю жизнь и переставлять пакеты с места на место и собирать проги, т.к. они только через исходники и могут быть собраны под каждую из систем (в отличие от винды, где все работает по одному setup.exe, или не работает, но с четким указанием сбоя отчего и почему).
Любая прога — не доллар чтобы всем нравиться. Да и мне никакой коммерческой выгоды от нее нет. В статье описана не сама прога (типа «ах какая она хорошая, скорее юзайте»), а процесс написания браузера и показан результат. Я не прошу вас бросить Хром/Мозиллу и сидеть в JustCode.dominigato
01.09.2019 15:23+1Сидеть в линуксе всю жизнь и переставлять пакеты с места на место и собирать проги,
В линксе «сижу» лет 15 уже, забыл когда что-то компилировал. Я же говорю, после того как вас заморозили, в линуксе ввели менеджеры пакетов и вообще много чего. Попробуйте как-то на досуге, узнаете много нового.
Просто не используйте ее
С этого и надо было начать статью. А то мало ли какой троян вы там прячете.blackstrip Автор
01.09.2019 15:31У меня Raspberry Pi 3 с распбианом есть, смотрю там видосики в хроме и играю через RetroPie в старые консольные/приставочные игры. sudo apt-get, все дела.
Еще убунту ставил, она тормозит. Там же нарывался на пакеты, когда ставил дрова под модем йоты, версия дров 33 (условный номер) не работает, версия 35 не работает, версия 38 тоже. А версия 34 работает. И ошибок не выдает конкретных. И я понял, что по сравнению с виндой линукс ужасен, и по статистике сидят на нем 1% пользователей, так что коммерческое что-либо под него писать не стоит.
Еще на лазарусе пробовал (дело было на убунте, а сейчас у меня он в подсистеме линух стоит на windows 10 с убунтой). Там пустое окошко — 20 мегабайт исполняемый файл. Добавляешь пару кнопок — 30 мегабайт. Добавляешь еще компоненты — он пихает еще какие-то модули в прогу, и вот она уже 40 мегабайт. Так себе оптимизация. Попробуй потом объясни почему у тебя прога с двумя кнопками 40 метров весит, что ты туда напихал (страшный троян может?). Еще Qt посмотрел, как он не работает из коробки и все надо донастраивать, и в разных линуксах то одно в нем не пашет, то второе.
И во мне укоренился фанат Windows.dominigato
01.09.2019 15:36То есть из-за проблем в дровах модема йоты вы решили что линукс это плохо? Логичненько…
blackstrip Автор
01.09.2019 16:10+1Из-за отсутствия адекватной системы вывода ошибок. Просто ставишь какой-то пакет, а там связи между ними какие-то дикие, то подходит, то не подходит. Потом удаляешь прогу, она с собой в могилу уносит какие-то пакеты, и оказывается они были нужны еще кому-то и теперь эти кто-то не работают вплоть до полного краха всей системы и приходится заново переустанавливать линукс с нуля (случай из распберри пи и ее распбиана). Консоль — прошлый век. Нормальный интерфейс это как у винды — красивые программы установки, предупреждения при деинсталляции что «есть shared DLLs, могут кому-то еще понадобиться, удалять?», уведомления что «уже есть DLL более старой / более новой версии, перезаписать?» при установке. Один EXE под все Windows, никаких пересборок исходников под каждую винду. Это нормальные цивилизованные отношения человека с компом.
bodqhrohro
02.09.2019 03:34Консоль — прошлый век
Ну дак Synaptic в лапы ;-)Потом удаляешь прогу, она с собой в могилу уносит какие-то пакеты, и оказывается они были нужны еще кому-то и теперь эти кто-то не работают вплоть до полного краха всей системы
А если выпилить из винды IE — внезапно оказывается, что от этого куча сторонних прог ломается, хотя нафиг кому этот «недобраузер» нужен, казалось бы. Вывод — плохому танцору орхиэктомия не поможет, только эвтаназия.
Пакеты дают легковесность и безопасность: одни и те же либы, вместо того, чтобы устанавливаться с каждой прогой отдельно, ставятся один раз. И в оперативке благодаря этому не дублируются. И обновление безопасности, которое прилетает на эту либу, тоже распространяется на все программы сразу — не надо ждать, пока обновят все.
apro
02.09.2019 21:28Просто ставишь какой-то пакет, а там связи между ними какие-то дикие, то подходит, то не подходит. Потом удаляешь прогу, она с собой в могилу уносит какие-то пакеты, и оказывается они были нужны еще кому-то
Звучит так, как будто вы использовали пакетный менеджер неправильно. Например вручную ставили, а потом опять же вручную удаляли deb пакеты.
Просто почитайте документацию про apt/apt-get и все эти проблемы исчезнут и будет значительно удобнее windows.
YemSalat
04.09.2019 06:53У меня Raspberry Pi 3 с распбианом есть, смотрю там видосики в хроме и играю через RetroPie в старые консольные/приставочные игры. sudo apt-get, все дела.
И все-равно opensource — говно, да?
Еще убунту ставил, она тормозит.
А че винду не ставили? А да, она ж не opensource, и MS ее так полноценно на арм и не портировал.blackstrip Автор
04.09.2019 07:48Вот мое развернутое мнение насчет открытого и закрытого:
habr.com/ru/post/465709/?reply_to=20584593#comment_20581837
и еще
habr.com/ru/post/465709/?reply_to=20584593#comment_20582037
Т.е. опенсорс, предположительно, будет менее качественным (менее рабочим, менее тщательно отлаженным), чем бесплатное закрытое (это которое я, например, выпускаю) и платное закрытое (которое делают профессиональные коллективы за деньги).
При закрытии исходников и прекращении форканья проектов школьниками — останутся только давно разрабатываемые проекты, которые их родные авторы холят и лелеют (как это было 20-30 лет назад). Для того чтобы что-нибудь написать глобальное — надо будет постараться, вложить душу, заниматься этим лет 10, а не сидеть и безмозгло форкать чужие исходники на переменке, а потом дописать туда пару строчек из hello world и забросить свой очередной форк.Ded_Banzai
04.09.2019 11:59При закрытии исходников и прекращении форканья проектов школьниками — останутся только давно разрабатываемые проекты, которые их родные авторы холят и лелеют (как это было 20-30 лет назад).
При прекращении «форканья» и закрытия исходников от «школьников» — давно любимые и холимые авторами проекты давно бы умерли, не прожив и десяти лет. Лет 20-30 назад была совершенно иная ситуация. Актуальные программы, которым 20-30 лет и которые продолжают развиваться и оставаться закрытыми и проприетарными, можно по пальцам пересчитать. Их процент в общей массе откровенного закрытого и проприетарного windows-шлака несоизмеримо ниже, чем те проекты, которые подхватили и поддержали как раз те самые «школьники», ныне взрослые и опытные профессионалы.
Вы практически в каждом посте утверждаете, что несете ответственность за свой продукт. Некто начал его использовать и у него украли данные для авторизации в личном кабинете одного из банков и, допустим, просто вывели всю сумму со счета. Пусть это будет один миллион. Вы, как разработчик, прощелкавший безопасность или пользователь, воспользовавшийся вашим браузером — кто из вас ССЗБ и каким образом вы будете компенсировать ущерб?
Читая ваши комментарии, я думаю, что смогу сформулировать вашу точку зрения на OS следующим образом:
«Я брал, беру и буду брать все, что мне нужно или просто хочется отовсюду, невзирая на лицензии или проприетарность. Взамен же я буду запрещать использовать плоды моего труда и всячески препятствовать их распространению, кроме как в скомпилированном и зашифрованном виде. Потому что мне так хочется и я никому и ничем не обязан.»
michael_vostrikov
04.09.2019 13:34Я только за закрытие исходников топлю. И за разгон команд школьников, которые без души и цели лепят куски кода направо и налево, перепрыгивая с проекта на проект, закидывая интернет этим открытым исходным кодом, кучей недоделанных форков.
При закрытии исходников и прекращении форканья
Вместо этого, имхо, надо набирать команду нормальных программистов, платить им как положено и они будут работать как положено.Как вы там писали… Ах да.
Не говорите что нам делать — и мы не скажем куда вам идти.
blackstrip Автор
01.09.2019 14:30-1А насчет пунктов:
1) с исходниками обойти в разы легче, с нуля же создавать аналогичный проект — гораздо затратнее. Я закрываю дверь в квартиру чтобы другие сами себе купили мебель, а не перли мою и выдавали за свою.
2) для нормальных юзеров дают EXE-шник, у них нет средств для просмотра и сборки исходников. Через EXE-шник они и налетят на проблемы. И я вам, понимающему исходники, смогу что-то доказать. А толпе на хайпе — нет.dominigato
01.09.2019 15:31+3Ваш проект не блещет оригинальностью и революционными технологиями, даже если вам так кажется. Это проблема всех неофитов, считать свой код совершенно уникальным и неповторимым. При этом обычно он выглядит ужос-ужос-ужос.
Отсюда и фантазии что ваш код кому-то надо «красть», удалять из него лицензии, прятать, внедрять кейлоггеры, заколачивать миллиарды на нем и т.д. Вы не фейсбук написали, надо же как-то адекватно оценивать реальность.blackstrip Автор
01.09.2019 16:12И что. Я должен вам выдать исходники? Фиг вам. Я свою позицию обозначил как «вертел опенсорс сами знаете где». Подробно все расписал, если вы не понимаете что раздавать всем подряд исходники без единой причины на это — это не айс, то смысла спорить с вами не вижу. Если они такие никому не нужные и не ценные — то зачем они вам. Это ж не исходники фэйсбука, в конце-то концов.
POPSuL
03.09.2019 07:15Оххх, есть такое ощущение, будто вы боитесь что вас уличат в том, что на самом деле это вы "натырили" кода у других :)
ICELedyanoj
03.09.2019 10:38+2Учитывая вот этот комментарий автора — возможно, что вы не так уж далеки от истины.
Берешь три плохих, тестишь по очереди, соединяешь кусок оттуда, кусок отсюда, тестишь, провал, соединяешь кусок отсюда, кусок оттуда, тестишь, успех — вуаля, получаешь один, но свой и хороший
blackstrip Автор
03.09.2019 11:23Да, там в 500 килобайтах засунут хром, переставший занимать гигабайты в оперативе, и линкс, переписанный на дельфи. Вы меня раскрыли.
ICELedyanoj
01.09.2019 18:31+1Какая несусветная глупость, повторяется уже в который раз.
Авторство и автора защищает не закрытый код, а цифровой сертификат. Для размещения вредоноса внутрь вашей программы никакие исходники не нужны. Тупо дописывается вредоносный кусок и делается перенаправление загрузчика.
А авторство (по конкретной версии) нужно доказывать цифровой подписью.
androidovshchik
01.09.2019 14:40+3все просто, это называется жадностью (или что-то близкое). Многие страдают этим, я тоже, но это неправильно. Мы живем в обществе потребления, где каждый думает только о себе. Если вы этим зарабатываете и не хотите открывать код (что собственно само по себе не осуждается), то хотя бы не оскорбляйте OS и открытые работы других, потому что вы не знаете их действительные мотивы
blackstrip Автор
01.09.2019 14:45-5Так я не оскорбляю, а не понимаю. Жадность это когда я отдал и у меня нет. Но код дублируется. Он останется и у меня, и появится у Васи. Мне не нужны проблемы, которые этот Вася потом создаст мне, когда станет обладать моим кодом. Потому что нас станет двое, а я хочу чтобы за проект отвечал только я и управлял им только я, т.к. я его создал. Аналогично с другими моими проектами типа там паинткада для мобил/виндоуса или дос-оболочки bss. Мне кажется это правильно когда у каждого проекта свой хозяин, и адресно ему идут и жалобы, и спасибы.
Areso
01.09.2019 14:50+3Для этого есть Open Source лицензии, которые закрепляют только за контрибьюторами проекта право на использование имени проекта. К примеру, MPL.
С такой лицензией Вы можете вполне настоять на том, чтобы форки имели другое имя.blackstrip Автор
01.09.2019 15:00Я и лицензии не понимаю. Что мешает стереть все упоминания из кода и просто украсть его? А потом автор придет в басманный суд и будет трясти флешкой с лицензиями? И он выиграет суд? Сомневаюсь)
dominigato
01.09.2019 15:33+3Это жадность, помешанная на иллюзии собственной уникальности и неповторимости. Хотя если автор не программист, еще можно простить такие дремучие заблуждения и невежество. Он просто абсолютно не в теме.
blackstrip Автор
01.09.2019 16:26-2Ну да, я дворник-осеменитель. Простите мне дремучие заблуждения и невежество. Я абсолютно не в теме. Вы довольны? Я — да. Идите обратно в свой линукс, пакеты сами не установятся. А я буду дальше топить за проприетарное ПО.
Ded_Banzai
02.09.2019 11:13+1Тогда топите не только за ПО. Топите за копирайт вообще.
Как насчет лицензий для иконок в вашем браузере? На каком основании вы их используете? Как насчет лицензирования вашей копии Delphi? Вы в курсе, что весомая часть библиотек в вашей любимой Windows имеют непосредственное отношение к OS? Ubuntu в вашей windows 10 — тоже OS.
Не хотите исходники открывать — да ради бога, на здоровье. Вам задали вполне невинный вопрос о причине, а вы тут конечным продуктом ополоснули целое комьюнити, чей вклад в развитие IT несоизмеримо выше вашего.
— Статья хорошая, читается интересно и лично для меня вопрос актуальный. За это благодарю. Но пробовать ваш продукт не стану сам и других отсоветую.blackstrip Автор
03.09.2019 13:34-1Я только за закрытие исходников топлю. И за разгон команд школьников, которые без души и цели лепят куски кода направо и налево, перепрыгивая с проекта на проект, закидывая интернет этим открытым исходным кодом, кучей недоделанных форков. Если бы им перекрыть кислород таким образом — они бы аккуратно изучали кодинг и писали что-то от души. А править чужой код много ума не надо, и ценности оттого в нем нет никакой. Ты у кого-то что-то взял, дописал, раздал всем, его еще двое взяли, сделали другие две версии, дописали еще что-то. В итоге изначально единый проект расползается, в каждом что-то доделано, а что-то нет, в одном одно, в другом другое. Мне это не нравится.
Бесплатное ПО с закрытым исходным кодом (с донатом по желанию) — классная тема. Все делают свои проекты, растут над собой, анализируют небольшие алгоритмы друг с другом (не целиком прогу, а конкретные проблемные места), выкладывают результаты своей деятельности в exe-шниках и других исполняемых файлах, обсуждают, пользуются, получают удовольствие от использования такого качественного ПО, каждый ответственен за свои косяки в своем ПО, замечательно.
За копирайт не хочу, т.к. давно уже надел треуголку. Хотя и пытаюсь написать все свое чтобы не брать на абордаж чужие продукты. В моем разработанном арсенале есть графический редактор PaintCAD (рисует картинки, создает и использует растровые шрифты собственного формата paintcad font или PCF, кадры анимаций, собирает GIF-анимацию, AVI-видео, добавляет WAV-озвучку к AVI-видео), программируемый звуковой редактор Qmpot (создает WAV озвучку, позволяет программно писать мелодии из отдельных WAV-сэмплов, которые можно извлечь также из SF2/DLS-банков в самом редакторе), авто-композитор музыки Muzz (сочиняет рандомные мелодии с выдачей их в MID или в Qmpot-программах, которые можно уже в Qmpotе превратить в WAV), программируемый на JS создатель анимаций Scriptaint (на движке IE программируется выдача кадра за кадром, в каждом из которых ставим в нужные места картинки, масштабируем их и применяем разные эффекты в пределах HTML/JS, а он каждый кадр сохраняет в BMP для последующей сборки в анимацию/видео в паинткаде).
В перспективе видится собственная IDE с каким-нибудь синтаксисом типа того же паскаля/си и выдачей на выходе хотя бы win32 exe-файлов без использования всякого тормозного .net. На этом котором я и буду в удовольствие кодить.
Все иконки JustCode нарисованы лично мной в моем редакторе PaintCAD 4Windows
blackstrip Автор
03.09.2019 14:26-1В дополнение к прошлому комментарию моему: вот, например, на хабре писали про опенсорс habr.com/ru/post/169339
Значит я все правильно понимаю. Опенсорс это мучения. Люди, незаинтересованные, непонимающие твой код, неопытные, пытаются что-то слепить вместе забесплатно. Зачем это вообще придумали? Единственная причина, по которой можно было придумать это — это иметь легкий доступ к исходникам разного чужого ПО. Для этого надо было внушить кодерам что никаких наработок у каждого программиста нет, что все надо выложить на всеобщее обозрение, чтобы другие потом это переняли к себе в проекты (или целиком форкнули) или поучаствовали.
Вместо этого, имхо, надо набирать команду нормальных программистов, платить им как положено и они будут работать как положено. И тогда все проблемы отпадут. И тогда код станет тоже проприетарным (никто не захочет отдавать его за просто так), и результаты в виде готовой проги — придется продать, чтобы окупить затраты на программистов. Но этот путь дает качество и уверенность в том, что ты делаешь и для чего ты это делаешь в составе такой команды с руководителем.
Получается: платное проприетарное — хорошо (т.к. по заказу, с четким ТЗ и результатом с тестами), бесплатное проприетарное (от души и для людей) — тоже хорошо, хоть есть кому вопросы задать и попросить добавить функции, а бесплатное открытое — плохо (т.к. хрен пойми кто делал хрен пойми что).0xd34df00d
03.09.2019 17:35Во-первых, если я пишу код как хобби после работы, то не понимаю, почему я вообще должен всем этим заморачиваться. Единственные закрытые репозитории у меня — те, где я решаю упражнения из книг типа Types and programming languages или Purely functional data structures, так как мне неохота заморачиваться с определением лицензий на производную работу.
Во-вторых, от опенсорса ещё профит в том, что потенциальный работодатель видит мой гитхаб, и это очень сильно упрощает процесс найма.
Ded_Banzai
04.09.2019 12:22В дополнение к прошлому комментарию моему: вот, например, на хабре писали про опенсорс habr.com/ru/post/169339
Там же, в самом посте, автор неоднократно пишет, что он устал исправлять баги, которые ему присылали. Видимо, пользователь всегда найдет способ выстрелить себе в ногу, не так ли? Сам же он не смог их найти.
имхо, надо набирать команду нормальных программистов, платить им как положено и они будут работать как положено. И тогда все проблемы отпадут. И тогда код станет тоже проприетарным (никто не захочет отдавать его за просто так), и результаты в виде готовой проги — придется продать, чтобы окупить затраты на программистов. Но этот путь дает качество и уверенность в том, что ты делаешь и для чего ты это делаешь в составе такой команды с руководителем.
Этот путь был пройден вашей любимой операционной системой. И действительно, написана она так, что ее было можно легко продать и с учетом интересов заказчика, но никак не конечных пользователей. Ворованный код, грязные трюки и маркетинг вознесли windows на вершину Олимпа. Однако сообщество было уже готово и тот же фокус с мобильными ОС уже не прошел. Проприетарное, да еще и коммерческое ПО активно продается и используется только там, где нет иных альтернатив.blackstrip Автор
04.09.2019 14:58проприетарная винда захватила мир, а открытый линукс — только 1-2% людей, которым "не нужны игры, не нужен уникальный windows софт", а нужен браузер, плеер и какой-нибудь язык покодить. Открытый код — это разбираться в чужом коде похлеще моего без табуляции, как и описал автор того поста, присылают все что не попадя, не то, не для того, с багами, злятся, ругаются. Потому что у них нет ТЗ и нет оплаты их деятельности. Соло такую бесплатную разработку еще можно провернуть, т.к. хотя бы идея есть и ты сам ее реализуешь. Но с толпой неизвестных людей — очень трудно (как и опять же описал автор того поста). Я считаю это некачественной и неэффективной разработкой, когда труда вкладывают много, а кпд очень низкий из-за незаинтересованных, непонимающих и просто не имеющих опыта кодеров различных возрастных групп.
Doctor5772
04.09.2019 15:47которым «не нужны игры, не нужен уникальный windows софт»
Извините, но зачем тогда делают Wine? Зачем тогда Valve стала помогать развивать драйвера для графики, портировать Steam и помогать с продвижением Linux-игр? Да, можно сослаться на SteamOS и Steam-машины, только вот где они сейчас? SteamOS больше как «тестовый полигон», а Steam machines и в продаже толком не найдёшь. Уже можно считать что нет смысла развивать Linux стек и гейминг. Но они его развивают и вкладываются. Значит это компании необходимо, и значит это приносит свои плоды и дивиденды.
P.S. Я пользуюсь и виндой и линуксом, и не настаиваю на использовании той или иной ОС. Однако если появится какая никакая, но конкуренция в сегменте ОС для десктопа, то я только за. Может быть это мотивирует Microsoft тщательнее тестировать свои обновления и оптимизировать свой софт? И самое главное, что бы остался выбор за пользователем.
Ded_Banzai
04.09.2019 16:04Да откуда вы взяли эти глупости про 1-2%? В OS далеко не только линукс, если уж про ОС говорить.
Браузер, плеер и покодить — это, скорее всего, вы про Мак говорите? Ну так у них таргет-групп совсем иная. Порог вхождения практически нулевой. Позиционирование своей «ОС для домохозяек» сделало свое дело.
Пусть уж злятся и ругаются тестеры, чем покупатели. От них в суд загреметь можно. Потому как коммерческая продажа подразумевает обязательства.
Работать в OS трудно. Очень трудно и тяжело. Но если следовать нехитрым и несложным правилам, разработанным OS-комьюнити, то внезапно оказывается, что не так уж трудно и тяжело.
— P.S. Критическая ошибка того чувака из поста — он взвалил на себя все сразу. И не имеет значения, OS проект это был или коммерческий проприетарный, все было бы точно также.
0xd34df00d
03.09.2019 17:29У меня есть проект, который я пилю лет 14 уже, и напилил, ну, порядком. И он даже не под копилефт-лицензией, а под пермиссивной.
Не уперли. Потому что нафиг это не нужно никому.
POPSuL
04.09.2019 06:56Ну вы наверное написали качественный код в котором легко разобраться, люди видят, что это не перспективный, мега-шустрый браузер на делфи, вот и не сперли еще!
blackstrip Автор
04.09.2019 08:16Я исходники не выкладывал. Про что вы?)
А браузер вовсе не перспективный. Статья не про какой у меня хороший браузер (он вовсе не хороший, т.к. без JS работают только новости и некоторые форумы), а про то, как сегодня, в мире где все занял прожорливый/лагучий и тормозящий на слабых компах/надоедающий уведомлениями хром, сделать простейший браузер, состоящий из:
— html-парсера,
— интерпретатора форм,
— просмотрщика скачанных файлов в виде текста/hex,
— редактора простых скриптов для ручной автоматизации обработки кода страниц с целью вытаскивания видеофайлов с ютуба / обрубания длинных шапок сайтов / перемещения в нужное место страницы в пикселях после загрузки сайта и др. подобных простых целей.
И в конце статьи можно посмотреть как такая прога будет работать (скачав ее и полазив по паре-тройке сайтов, а потом удалив если, конечно, она вам не нужна для какого-нибудь слабого компа).
У меня не было цели распространять исходники и поэтому я не боюсь что их упрут или просто превратят в несколько невнятных проектов-форков.POPSuL
04.09.2019 13:14Так я и не вам написал, а ответил товарищу 0xd34df00d в шутливо-саркастической форме.
Areso
01.09.2019 13:37В наших северных широтах еще до популярности Open Source движения были десятки форумов (и сегодня штук 5 живых наберется), где в 2000-2008 гг народ активно выкладывал исходники своих поделок на излёте популярности VB6, Delphi и т.д. безо всяких лицензий. Берите и пользуйтесь, называется.
И нет, сегодня с инструментами VCS гораздо проще отследить откуда пошел код, какие в него и кем вносились изменения, какие были pull request'ы в оригинальное репо, что автор принял, а что отклонил, и так далее.blackstrip Автор
01.09.2019 13:51-1Да понятно что есть системы, в которых принимаешь и отклоняешь изменения, внесенные всякими левыми «соавторами» твоей проги.
Зачем это делать для неизвестного проекта, который за полгода сделаешь и будешь пользоваться спокойно. А потом все наработки спокойно утащишь в следующие проекты. Ты сам себе хозяин. Каждый день ты спокойно по одному-два часа сидишь и доделываешь свои проекты, читаешь статьи, самообучаешься, развиваешься. Зачем в этом стройном процессе лишние люди (вероятно, не семи пядей во лбу), и отданный хрен пойми кому исходный код? Я не вижу в этом никакой выгоды.
Разве что тренинг для командной работы при совместном написании ПО. Но я не работаю программистом.
tmin10
01.09.2019 14:27Хм, а если лицензия не указана, то как таким кодом пользоваться? Даже то, что на SO приводят, нельзя просто так взять и утащить в коммерческий проект, если не написано, какая лицензия.
Это если серьёзно к вопросу подходить.Areso
01.09.2019 14:28В нулевых этот вопрос мало кого беспокоил, считалось, что если автор выложил свой код, то этого вполне достаточно, чтобы его можно было переиспользовать, целиком или частично.
Повторюсь, это было во времена, когда open source в России приравнивалось к выложенным исходникам.
dominigato
01.09.2019 13:53+5Вас недавно разморозили? С годков так 90-х открытый код почти завоевал индустрию.
Отлаженный, вылизанный и быстроработающий код — всем нужен. Но он закрыт
Так откуда вы знаете что он Отлаженный, вылизанный и быстроработающий если он закрыт? Судя по вашему коду, совсем не Отлаженный, вылизанный и быстроработающий.
А вот открытый код всегда можно проверить на отлаженность и т.д. Он же открыт.
Если вы новичок в индустрии, тогда может быть понятно непонимание принципа работы опенсурса. Но если нет, то на вашем месте я бы постыдился такое писать.blackstrip Автор
01.09.2019 13:57-3На моем месте и постыдитесь. Мне стыдиться нечего.
Закрытый код я тоже смогу проверить на отлаженность и ваша помощь в этом мне не нужна.
Отлаженный, вылизанный и быстроработающий код — это если прога не выдает ошибок при работе, работает быстро на слабых системах.
В JustCode, протестированном на Win10, WinXP, Win95 — это есть. Т.е. плавно без лагов идет просмотр сайта при прокрутке на слабой системе, все клики отрабатываются как надо, файлы скачиваются и просматриваются, есть множество удобных функций по просмотру скачанных файлов в виде текста/hex.
Это и есть прога, которая работает хорошо, значит у нее отлаженный код =) Оттуда я это и знаю.
Баги, конечно, отыскиваются. Уже несколько еще нашел, пока статью писал. Но сам движок быстрой отрисовки сайта со ссылками работает отлично (имхо), с хорошим fps даже на этом несчастном планшете.
В кодинге я с 14 лет, сейчас мне 34. Есть опыт кодинга на qbasice, delphi, ассемблере, java2me, c#, с++. Проникся больше всех паскалевским delphi, на нем и творю.dominigato
01.09.2019 13:58+5Это и есть прога, которая работает хорошо, значит у нее отлаженный код =) Оттуда я это и знаю.
А, ну да, поверю на слово, программист же сказал — работает. Очень смешно.
К — компетентность.blackstrip Автор
01.09.2019 14:20+1Не на слово, а по результатам использования.
Скачал, например, Калькулятор. Считает за доли секунды, есть операции сложения, вычитания, деления, умножения, память, корень квадратный. Работает хорошо.
Или считает по 5 секунд одну операцию, вычитание забыли сделать, работа с памятью сразу выдает exception. Работает плохо.
Зачем для этого смотреть исходный код. «Не нужно быть курицей чтобы понять что яйцо — тухлое.»
Браузер это простая прога — заходит на сайты, просматривает контент, качает файлы.
Если все умеет, значит работает хорошо. Или вы как юзер разучились себя вести, только как кодер?dominigato
01.09.2019 15:18+2Я так понимаю вы никогда не слышали о тестировании.
Если все умеет, значит работает хорошо
Занес в список золотых цитат :Dblackstrip Автор
01.09.2019 15:26-1Ну всякое там V-образное, циклическое и еще какое-то. Ну я же не фирма по производству ПО, мое тестирование заключается в вылизывании каждой функции до стадии «работает как задумывалось», и проверки не сломалось ли что нибудь в старых функциях после добавления новых функций.
Jogger
03.09.2019 09:11Не на слово, а по результатам использования.
Угу-угу, видали мы таких. А потом оказывается, что при загрузки определённой последовательности байт происходит переполнение буфера, и управление переходит в незапланированную область памяти, позволяя выполнить на устройстве пользователя произвольный код (или, например, случайно удалить всё на диске C). Вы проверяли свою программу в нормальных условиях, вы даже не пытались проверить какие-то граничные случаи.
Если все умеет, значит работает хорошо. Или вы как юзер разучились себя вести, только как кодер?
Угу, а потом кричите «айайай, как же так, меня взломали через уязвимость в windows, а ведь она с закрытым кодом и всё умеет, значит работает хорошо, такого же никак не могло произойти!»
Вы знаете, вы мне напоминаете одного человека, который рассуждал так же. Я его часто видел в зеркале лет 20~25 назад. И код он, кстати, такой же писал. И даже на делфи.
Clasen01
02.09.2019 10:12Отлаженный, вылизанный и быстроработающий код — всем нужен. Но он закрыт.
Это вы вот это вот называете «Отлаженный, вылизанный и быстроработающий код»?
Ваш код обработки тега imgif (not inscript) and (tagname='IMG') then begin ParseTag(tagpure); s1:=''; s2:=''; s3:=''; for k:=0 to length(nams)-1 do begin if nams[k]='WIDTH' then s1:=Form3.DeQuote(vals[k]); if nams[k]='HEIGHT' then s2:=Form3.DeQuote(vals[k]); if nams[k]='ALT' then s3:=Form3.DeAmper(vals[k]); end; if checkBox3.Checked then begin imgtext:=''; if (length(s1)>0) or (length(s2)>0) then begin if length(s1)=0 then s1:='???'; if length(s2)=0 then s2:='???'; imgtext:=s1+' x '+s2; end; if (length(s3)>0) and (s3<>'""') then begin if length(imgtext)>0 then imgtext:=imgtext+', '; imgtext:=imgtext+s3; end; if length(imgtext)=0 then imgtext:=Lg.GR(11) else imgtext:=Lg.GR(11)+' ('+imgtext+')'; imgtext:=imgtext+': '; imgtag:='SRC'; needimg:=true; needdbr:=true; end; end;
popov654
03.09.2019 17:10+2Правда в результате такого зоопарка исходники превращаются в редкостное и нормальный человек в них и разбираться не будет
Не хочу вас обидеть, но ваш код, каким бы быстрым и вылизанным не был, выглядит тоже как редкостное (почти нечитаем). Так чем тогда вы лучше, и более того, какой смысл код закрывать?
michael_vostrikov
01.09.2019 20:08+2Поэтому закрытие исходного кода означает что никто не упрет часть проги чтобы сделать свою аналогичную, никто из конкурентов не упрет прогу целиком чтобы сделать аналогичную вредоносную с целью компрометации оригинальной.
E9 XX XX XX XX
Это инструкция JMP rel32 процессора Intel. Делает переход на указанное смещение относительно текущего адреса. Чтобы сделать "аналогичную вредоносную прогу" никакие исходники не нужны, достаточно поставить в точке входа эту инструкцию с переходом на вредоносный код, который в конце работы восстанавливает исходные байты и делает переход обратно. Поэтому нет, не означает. Рекомендую вам пересмотреть свои неверные представления о разработке и работе программного обеспечения.
blackstrip Автор
01.09.2019 20:28Имея на руках исходники можно сделать это гораздо изящнее. Встроить в прогу в нужные места, выполняемые при выполнении конкретных функций, вредоносный код на языке высокого уровня. Без всяких JMP, просто вставить дополнительный код в исходники, это сделает любой такой как вы Вася. Добавлять же в экзешник дополнительный код и заменять первую инструкцию на jmp и потом еще восстанавливать байты смогут только какие-то люди типа вирусописателей прошлого века, а сейчас большинство это дизайнеры, яблофилы и питонисты, для них это «что-то на эльфийском».
michael_vostrikov
01.09.2019 21:04"Гораздо изящнее" это уже совсем не изначальное категоричное "никто не упрет". Только вирусописателям не нужно изящество, им нужен инструмент, стабильно работающий для максимального числа программ. Возиться с исходниками одной программы никому не надо, тем более что во вредоносном коде в большинстве случаев все равно куча инструкций на ассемблере для обхода защиты ОС или антивируса.
Добавлять же в экзешник дополнительный код и заменять первую инструкцию на jmp и потом еще восстанавливать байты смогут только какие-то люди типа вирусописателей
Любые встраивающиеся вирусы делают это в автоматическом режиме совершенно без участия человека. А для интересующихся давно написаны инструменты, которые написание вирусов автоматизируют. Термин "скрипт-кидди" не просто так появился.
blackstrip Автор
01.09.2019 21:14Я говорил про ситуацию с компрометацией конкретной программы. Не заражением чем-нибудь типа вируса всего подряд, а чисто для конкретной проги мне лично удобно было бы вписать что-то сразу в исходный код, а не париться с такой ассемблерной встройкой, предварительно подготовив вредоносный кусок, присовокупляемый к оригинальному exe-шнику.
Blaine_Mono
01.09.2019 21:17Так, подождите, как можно скомпрометировать программу при помощи форка? Это как качать сборку firefox или chrome от мейл.ру а потом жаловаться на то что вместе с ней шел защитник мейл.ру и обвинять в этом Mozilla или Google.
michael_vostrikov
01.09.2019 21:26Вам возможно да. Но вы говорили не про себя, а про гипотетического конкурента, причем в глобальном смысле в виде слова "никто", причем в качестве довода против открытия исходников. Для тех, у кого цель сделать вредоносную программу, расстановка JMP-ов даже вручную не проблема. Поэтому ваша логика неправильная, отсутствие исходников никак этому не мешает, на что я и указал.
blackstrip Автор
01.09.2019 21:41Если исходники есть — можно легко встроить высокоуровневые вставки в нужные функции проги. Это сможет любой.
Если исходников нет — то только такой низкоуровневый набалдашник налепить, который будет выполняться до проги. И уже в нем всякие перехваты вызовов определенных функций как-то реализовывать (что геморно). Это сможет далеко не любой.michael_vostrikov
01.09.2019 21:49+1Любой. Не надо там ничего перехватывать. Создаем нить и запускаем программу как было, в нити делаем все что собирались. Если кто-то не умеет встраивать код сам, то скачивает программу, которая умеет. Или платит 10 баксов тому, кто умеет.
blackstrip Автор
01.09.2019 22:13Сколько можно упираться) Вписать в исходники на привычном языке легче чем платить 10 баксов или качать левые проги. Поэтому если эту дверь (исходники) закрыть, то останется лезть через окно (10 баксов/прога). Лучше же закрыть один легкий путь чем оставлять оба — легкий и сложный. Если для вас они оба достаточно легки и привычны, то это хорошо. Но не все такие как вы.
Blaine_Mono
01.09.2019 22:2810 баксов это ~668 российских рублей. Это примерно цена трех часов работы за медианную зарплату в России. Это цена 22 поездок на московском метро по единому билету. Эти деньги может даже школьник отложить с обедов.
Хорошо, допустим некий злодей решил вас скомпрометировать путем модификации вашей программы и распространения его со своего сайта. (Мы не будем рассматривать вопрос насколько это эффективно) Вы уверены что у него не найдется 668 рублей на такую цель?blackstrip Автор
01.09.2019 22:39У бандита нож и пистолет. Вы уверены что если отнять у него пистолет, то он не убьет вас ножом? Если нет — тогда оставим ему пистолет, т.к. все равно вы потенциальный труп.
Я пистолет у него отнял. А вы доказываете мне что я труп. Нет уж. Чем меньше легких путей, тем меньше вероятность.Blaine_Mono
01.09.2019 22:59Вы не отняли у бандита пистолет, вы обмотались упаковочной пленкой в один слой и рассказываете что эту броню не пробить из пистолета, а минимум нужно противотанковое оружие.
Меньше простых путей? Заплатить 700 российских рублей это и есть самый простой способ.
И раз уж пошли аналогии, вы не от бандита защищаетесь, а от инопланетян.
Давайте еще раз проясним. Вы утверждаете что некий недоброжелатель захочет взять и модифицировать вашу программу для ее некоего вредоносного поведения с целью вашей дискредитации? И сколько таких случаев было за последние 25 лет?vladkorotnev
03.09.2019 12:45+1Вы-то так рассказами про 10 баксов не пугайте, а то я уж ненароком подумал, что это месиво из схескбох9.схескед и фаллических операторов ещё и за деньги распространяется
Blaine_Mono
03.09.2019 17:39Я ссылался на michael_vostrikov, он говорил что вполне реально за 10 баксов нанять человека для внедрения вредоносного кода в экзешник без исходников. Оснований ему не верить у меня нет.
vladkorotnev
04.09.2019 07:27А, ну, вполне. При наличии инструментария вида "дропнул на иконку бинарник — вирусня заинжектилась", можно платить и по 10 баксов за 100 приложений вообще :-)
michael_vostrikov
01.09.2019 23:04Это легче вам, и то только потому что вы плохо представляете содержание вредоносного кода. Многие вредоносные действия легче писать на ассемблере или как минимум создавать условия для их выполнения. Вы не закрываете никакую дверь, это существует только в вашем воображении из-за ваших неправильных представлений. Кроме того, как я уже сказал, отвечал я на ваше изначальное утверждение, которое со словом "никто" и про целенаправленную компрометацию конкретной программы. В контексте "что бы такое взломать" возможно да, отсутствие исходников отпугнет пару неспециалистов.
blackstrip Автор
01.09.2019 23:14«отсутствие исходников отпугнет пару неспециалистов» — вот и хорошо, плюс никто не воспользуется моими наработками забесплатно, и я спокойно останусь единственным их владельцем.
michael_vostrikov
01.09.2019 23:49Ну вот, опять никто. Восстановление необфусцированной программы по машинному коду гораздо проще, чем вы думаете. Есть такой плагин к IDA например. В общем, изучайте область прежде чем о ней спорить.
alsoijw
02.09.2019 00:45Вписать в исходники на привычном языке легче чем платить 10 баксов или качать левые проги.
Во-первых нужно ещё найти куда вставлять в делфи коде, а он у вас блоб, даже в исходниках(sic!). Во-вторых этот делфи ещё и знать и иметь нужно, для пересборки.
Ded_Banzai
02.09.2019 11:30Да вы что такое несете? Какие еще вирусописатели прошлого века? Кто из уверенных кодеров не знает еще newmem и прочие радости?
Чем вас так этот Вася обидел, что вы его в каждый комментарий вставляете, как вредоносный код в исходники OS?blackstrip Автор
02.09.2019 13:26Это вы лучше тому кто выше напишите «Э вы чо такое несете, никто кроме вас не знает о JMP штоле?».
Имхо, поправить исходники смогут гораздо большее количество сегодняшних «программистов», чем вставить низкоуровневый кусок в исполняемый win32 код. Поэтому это такая защита — не давать никому исходники.Ded_Banzai
02.09.2019 13:46Да проще, конечно. Но и сегодняшние «программисты» вряд ли станут заморачиваться со зловредами, чтобы именно вам попортить репутацию.
michael_vostrikov
02.09.2019 14:24+1"Защита" означает, что без исходников нельзя или крайне сложно добавить вредоносный код. Но это не так. Даже если человек не умеет делать это сам, ему проще скачать маленькую утилиту для хакинга, чем большую Delphi.
Как вы вообще представляете вектор атаки? Что кто-то возьмет ваши исходники, добавит туда вирус, и выложит на файлообменники, а люди будут качать оттуда вместо официального сайта? Ну так не нужны для этого исходники, куча таких программ с закрытыми исходниками на подобных сайтах. Здесь не надо чтобы все умели так делать, достаточно одного хакера.
blackstrip Автор
02.09.2019 14:36«Защита» означает, что без исходников нельзя или крайне сложно добавить вредоносный код.
поправить исходники смогут гораздо большее количество сегодняшних «программистов», чем вставить низкоуровневый кусок в исполняемый win32 код
= крайне сложно для большинстваmichael_vostrikov
02.09.2019 15:02Что мешает неумеющему "программисту" скачать программу, которая сама это сделает?
Вот в вашей оценке их как "большинство" и содержится ошибка. Большинство вообще не интересуется компрометированием чужих программ даже с исходниками. А среди тех, кто интересуется, для большинства это несложно.
blackstrip Автор
02.09.2019 16:03Что мешает бабке с лавочки изучить аэродинамику, построить ракету и улететь на Луну? Ни-че-го! Сто раз из пустого в порожнее перелив, толку ноль. Заканчивайте, если вы не понимаете что поправить, украсть, заимствовать, использовать исходники для любых целей (включая компрометацию конкурентов) легче в сто раз когда они доступны — то толку писать сто комментов друг за другом? Я открывать исходники не буду, о чем написал в более чем 20 комментов под этим постом. И все равно вы упорото продолжаете мне что-то доказывать, видимо, в надежде что я скажу «а, да, действительно надо раздать исходники и сидеть с глазами в разные стороны и повторять „я опенсосер, сичас 20 Васей из шестого бе набегут и мою прогу поправят что она выйдет в топ и обгонит хром по популярности“. Неа, не будет этого.
Ded_Banzai
02.09.2019 16:57+2Никто не ждет от вас таких слов. Открывать или закрывать исходники — дело исключительно ваше. Людей раздражают противоречия и двуличность вашей аргуметации.
michael_vostrikov
02.09.2019 17:34+1поправить, украсть, заимствовать, использовать исходники для любых целей (включая компрометацию конкурентов) легче в сто раз когда они доступны
Да. Только видите ли в чем дело… Использовать исходники для этих целей… необязательно.
видимо, в надежде что я скажу "а, да, действительно надо раздать исходники"
Я говорю исключительно про вашу логику, про некорректность и противоречия ваших аргументов. Лично я у вас исходники не просил, мне они не нужны.
Blaine_Mono
02.09.2019 20:50Вы когда-нибудь слышали о людях которые жалуются на то, что их соседи облучают через стены? А они обматываются фольгой для «защиты» от облучения и искренне верят что это их от чего-то «защищает».
sumanai
02.09.2019 23:13Имхо, поправить исходники смогут гораздо большее количество сегодняшних «программистов»,
Фигня. Я полдня буду собирать туллчейн, чтобы скомпилировать вашу программу.
bodqhrohro
02.09.2019 03:20Один единственный разработчик — и он отвечает за качество, не работает ПО — вопросы к нему, полезное ПО и нравится — спасибо ему.
Это всё хорошо, пока разработчик живёт и здравствует. Но если что-то случится? Задумывались, кому передать наследство? С опенсорсом таких проблем нет — любой желающий может откопать проект и продолжить начинания. Как это было с LibreDWG, например.
Dimonkov
01.09.2019 11:04+5Оформление кода это в первую очередь уважение к самому себе, через месяц-два, когда появится необходимость что-то поправить. Сами говорили, что уже сталкивались с проблемой подсчёта блоков.
"Вот если бы существовал инструмент, который форматирует код просто по нажатию кнопки...., постойте ка, большинство текстовых редакторов и IDE могут это"
Теперь по опенсорсу — в опенсорс в первую очередь как раз и кладут код, чтобы другие могли беспьатно пользоваться. Никто и не обещает вам, что сразу посыплются пулл реквесты с новыми фичами(хотя такое тоже иногда случается), но я просто могу гарантировать, что если проект хоть сколько нибудь интересный(а это вроде тот случай) — то вам сразу пришлют исправления ошибок, это как минимум.
Плюс, если я знаю, что мне этот код "людям показывать", то он автоматически становится чище, появляются скрипты для рутинных действий, и меняется мышление — "что мне такое добавить, что было бы полезно не только мне, но и большому количеству людей".
ledocool
01.09.2019 13:43У меня представление об открытом исходном коде как о вечно незакрытой двери в квартиру. Когда спрашивают «а для чего же ты оставляешь дверь открытой?» опенсорс-товарищи отвечают «ну может добрые люди зайдут и мебель мне принесут, поставят, или бытовую технику». Хотя у меня одно представление «оставил дверь открытой — все спукрали, это Россия, детка».
Было бы что тащить. Вы ж не супернавороченный алгоритм придумали, а написали полупарсер html.
А вообще представьте, если бы за то, чтобы использовать теорему Пифагора вам пришлось платить, а ее доказательство хранили в сейфе. Ну вот это примерно и происходит в мире проприетарного ПО. Зато с другой стороны у математиков целые бои в стиле YiGiOh случались, когда они на время решали разные задачки и кто быстрее решал, тот получал более крутой ранг как в этих ваших игрулечках. Правда, не уверен что это сильно помогало продвижению науки — из-за этого математики были вынуждены держить свои открытия при себе.
blackbird_ru
01.09.2019 16:48-1А разве IDE сама не ставит табуляцию. Студия всё сама сносит автоматически. Но вообще, собственный браузер, делфи, прямо как в прошлое попал.
ICELedyanoj
01.09.2019 18:43Не имею целью кого-то обидеть или наплевать в душу, но очень рекомендую отделять логику от UI.
reci
04.09.2019 11:27Тут скорее дело в том, что ни один гик не поставит Ваше ПО, не взглянув на исходники по диагонали или хотя бы комментарии на гитхабе, а не в Вашем оформлении кода. Вы можете Вам не принимать пулл-реквесты, если хотите в одиночку дальше разрабатывать и не мучиться с табами/пробелами, но вдруг у вас модная нынче телеметрия встроена в браузер?
blackstrip Автор
04.09.2019 11:51статистика скачиваний по логам сайта говорит об около 1000 скачиваниях с хабра за 2 дня. Т.е. каждый 25ый просмотревший пост — скачал. Поэтому не "ни один гик".
А телеметрию, конечно, нужно бояться. Я сам боюсь что в мс ворде или в виндоус 10 за мной следят. Но еще не пробовал запросить в майкрософте исходники на проверку. Скорее всего они скажут что код закрыт и откажут. Я делаю примерно то же самое, ведь код закрыт.
Ded_Banzai
04.09.2019 12:05Ну скачали, и что с того? Я скачал, чтобы его разобрать и посмотреть, что там внутри. Может быть, форкну его. OS наборы иконок у меня есть и на большой перемене будет, чем заняться.
И не будете пробовать, потому что приняли лицензионное соглашение. Но вы не майкрософт.blackstrip Автор
04.09.2019 14:42ну к лицензионным соглашениям я отношусь также как к лицензиям) промотать и принять
а форкнуть без исходников вы можете только воспользовавшись той прогой за 10 баксов, которая примотает через jmp ваши новые функции в виде куска машинного кода в конец exeшника.
reci
04.09.2019 13:03Они все скачали исключительно для реверс-инжиниринга — не сомневайтесь! :)
Насчет телеметрии можно не бояться — а быть уверенным, что следят. Ну может быть не конкретно за Вами, отдельный юзер — песчинка в общей массе. Но остается актуальным вопрос, что потом делают с собранными данными, как обрабатывают, и как хранят. И ещё успешно втюхивают мне ненужный товар, используя мои поведенческие слабости. Да и не факт, что собранные данные не всплывут на просторах интернета в результате очередной утечки.
Можно сделать выводы и мигрировать на открытые продуты (без телеметрии), одной маленькой брешью меньше
michael_vostrikov
04.09.2019 13:27Раз вы пытаетесь сделать из известных фактов выводы, которые удобны вам, я тоже напишу явно. Я один из тех 1000, и я тоже скачал не для того чтобы его ставить, а чтобы проверить, нет ли там чего подозрительного.
blackstrip Автор
04.09.2019 15:06ну я не пытался заставить всех использовать мой html-браузер вместо поддерживающего тучу стандартов хрома или фаерфокса. Статья про то как написать простой браузер и в конце приведен результат, чтобы посмотреть как оно работает (а после удалить если у вас нет слабого компа и вам он явно будет бесполезен, т.к. на мощном компе удобнее всего будет с хромом). Я тоже качаю неизвестные проги обычно посмотреть что внутри, прокатить на вирустотале, ресурсы поизучать, так что ожидаю что и другие будут делать примерно тоже самое.
michael_vostrikov
04.09.2019 15:49Если уж на то пошло, статья не о том, как его написать, а о том, какой он у вас получился. Причем только интерфейс пользователя. Про что-то, относящееся к написанию — обработка HTML-грамматики, архитектура компонентов, оптимизации — ничего нет.
blackstrip Автор
04.09.2019 16:02статья расчитана на немного продвинутого программиста, который знает какие бывают теги в html, как парсить теги, как меняют юзерагент. Теперь ему не надо пытаться делать простой html-браузер с нуля, а можно сразу посмотреть что примерно будет, как будут выглядеть сайты без js, и много ли можно выудить для вывода в браузер из простого html. А потом уже решить для себя какой браузер делать, что там нужно, что не нужно, и написать более совершенный браузер.
AllexIn
01.09.2019 09:58+2Какие вообще могут претензии к коду, который вам не продают?
Товарищ сделал годный проект. Я его конечно использовать не буду, потому что «идите нафиг с не opensource браузерами», но ваши претензии вообще смешны.
«Мне не нравится ваш код, вот вам минус.»0xd34df00d
03.09.2019 17:44Ну, просто мы на Хабре, который, кажется, когда-то был для программистов, и оценивать код и отношение к коду вполне себе естественно, имхо.
LevOrdabesov
01.09.2019 14:41И остались в итоге на IT-ресурсе одни начальники-доценты, обсуждающие очень важный вопрос: табуляция или таки четыре пробела…
Alex_Sage
01.09.2019 19:46Ребят, ну зачем сразу.раться из-за оформления кода? Уже давно придумали и автоформатирование (как термин), и подключаемый prettify/beautify для разных языков, и даже сайты для разметки кода.
Неужто мы будем как шакалы «отсеивать» слабых и неприспособленных, как будто это критически влияет на нашу выживаемость?alsoijw
01.09.2019 20:03Имена переменных так просто не поправить. Баги из-за перепутал вложенность — тоже
ledocool
01.09.2019 09:40Если лень табулировать, то в редакторах, как правило, есть магическая кнопка делающая все табулирование за вас. netbeans, например, делает это по команде shift+alt+f, например. Там в опциях можно установить стиль оформления (их там тонна) или создать свой на основе существующего.
Рекомендую, т.к. оформление очень сильно помогает читать незнакомый код.blackstrip Автор
01.09.2019 14:49-1Лишняя табуляция (а то и несколько) в каждой строке — это файлы исходников будут большого размера =) Я не привык к табуляции, а исходники никому не отдаю, оттого проблем от неформатированных исходников у меня нет.
ledocool
01.09.2019 17:42+1Как я люблю горячий толстый… троллинг по утрам.
bodqhrohro
02.09.2019 03:40Почему троллинг-то? Вы пробовали писать код на мобильнике с маленьким экраном, например? Отступы теряют смысл, даже в пробел-два — всё равно даже короткая строка разбивается на несколько экранных.
ledocool
02.09.2019 10:01+1Откровенно говоря, не пытался писать код на мобильнике (особенно с маленьким экраном). Я конечно слышал про нигерийского парня, для которого подаренный б/у мобильник стал спасительной ниточкой в it, все же не представляю зачем так делать людям в стране, где компьютеры (и портативные в том числе) доступны.
Но даже если мобильник оправдание, я уже не могу поверить в «размер файлов» как повод отказа от табуляции. Особенно в контексте того, что автоформатирование таки существует (и автор выкладывает код на обозрение).blackstrip Автор
02.09.2019 11:18-1Мне просто лень табулировать вручную, а автоматика бывает сносит не на тот уровень, а мне лень править ее кривую табуляцию.
Три вложенных begin-end и так глазами видно. А когда пять, да еще кто-то внутри кого-то, а кто-то рядом с кем-то — то просто после каждого end пишем комменты примерно так:
for i:=1 to 5 do begin a:=1; for j:=1 to 5 do begin for k:=1 to 5 do begin d:=d*k; end; //for k:=1 to 5 do for l:=1 to 5 do begin b:=5; for m:=1 to 5 do begin c:=c+m; end; //for m:=1 to 5 do end; //for l:=1 to 5 do end; //for j:=1 to 5 do end; //for i:=1 to 5 do
Поэтому я не пользуюсь табуляцией. Мне так привычней. Если бы требовалось куда-нибудь исходники потом передавать другим кодерам — то сделал бы как им привычней. Но это соло-проект, а на результирующий код в exe табуляция никак не влияет.michael_vostrikov
02.09.2019 18:10а мне лень править ее кривую табуляцию.
после каждого end пишем комменты
//for k:=1 to 5 do1-2 раза нажать Tab в той же строке лень, а пробел, два слеша, Ctrl+C в одном месте, Ctrl+V в другом месте набирать не лень?) Слабая какая-то у вас аргументация.
popov654
03.09.2019 17:38Вам не кажется, что правка ошибок в автотабуляции суммарно займёт у вас в разы меньше времени, чем подсчёт begin и end в трудных случаев и написание комментариев-меток? :)
FForth
02.09.2019 14:02Тоже не понимаю весь этот хайп вокруг оформления кода, авторский стиль такой у него сложился. (он его кому то навязывает?)
Кому надо отформатирует под свои вкусы.
P.S. Классический ассемблер тоже зачастую выглядит как запись в столбик, да ещё и с командами перехода.
bodqhrohro
02.09.2019 14:07где компьютеры (и портативные в том числе) доступны
Они громоздкие, даже небольшие UMPC. Маленький мобильник можно спрятать в ладони.я уже не могу поверить в «размер файлов» как повод отказа от табуляции
Меня давно волнует вопрос: сколько лишних мегабайт приходится гонять по сети гентушникам, которые качают исходный код просто ради перекомпиляции под своё железо и юзы? Без цели читать и править код. Сжатие, допустим, хорошо справляется с форматированием, но вот с комментариями — определённо нет.
mSnus
01.09.2019 03:50+4Кажется, я писал тоже когда-то писал такой код… Ленился назвать checkBox9 нормальным именем типа cbProcessLinks, ленился вместо 24 и 25 задать константы sLINK_A_HREF и sLINK_A_NAME, ленился выносить всю механику в отдельные функции и писал её прямо в обработчике события checkBox9.onClick ...
Потом нарвался на то, что такой код поддерживать и дописывать невозможно, так и умерли все велосипеды. Но какое же было хорошее время!!! Задолго до появления WAP в мобильных Siemens...))
8street
02.09.2019 12:41Но какое же было хорошее время!!!
Подписуюсь. Можно было проект сделать за день-два. А потом месяц разбираться, что ты там накодил 3 года назад.
alexdoesh
01.09.2019 06:48+2Господи и суси, отсутствие форматирования, нейминг и стиль этого фрагмента на дельфях, в целом, настолько возмутительны, что слов нет. Скажите честно, вы делаете все это уже много лет просто ради лулзов? Или это реальные пет прожекты?
blackstrip Автор
01.09.2019 08:02Когда на окошке 10 элементов: именовать их comboBoxDlyaHREF или не именовать и оставить checkBox1 — все равно, только для какого-то удобства чтобы использовать в 20 местах и не искать каждый раз на форме (при моем подходе мне сначала придется посмотреть где этот флажок на форме, посмотреть что на нем за надпись, и потом уже его использовать). А в итоге компилятор/линкер превратит все это в одни и те же переменные в машинном коде. Поэтому это только дело вкуса.
Да, все ради лулзов) Эти проекты на дельфе никуда не продаются и не передаются для дальнейшей доработки другими программистами. Если бы передавались, то, конечно, можно было бы и облегчить задачу понимания следующим товарищам. Это такое домашнее хобби с написанием проприетарного закрытого кода, принадлежащего одному человеку, а не профессиональная деятельность когда 10 людей друг за другом перехватывают проект, разбираются в отдельных его частях, дописывают и переписывают.Simplevolk
01.09.2019 11:58+2Я однажды писал курсовую\пет проект — игра по типу «волк и яйца». И было у меня очень много таких кнопок. помню btn24 был.
А потом был ад, так как я забывал какая кнопка к чему относится. После этого, всегда называю переменные читаемо. А еще и комментарий напишу.
Чтобы потом, когда время на пет проект снова появится- я мог бы быстро влиться в разработку.blackstrip Автор
01.09.2019 14:35-1Когда таких названий флажков 100 штук — я все равно забуду какой к чему относится. По номерам даже проще — на форме тыкнул, посмотрел номер и пишешь про него. Ну рядом коммент оставишь "//если флажок А — то Б" чтоб потом не путаться, когда править вздумаешь. Дело вкуса и привычки.
Beyondtheclouds
01.09.2019 16:15+1мне немного любопытно а вы профессионально с проганьем как то связаны?
Sabubu
01.09.2019 00:30+2Вы не думали вместо Win10 поставить сильно урезанный WinXP или Win7, которые уместятся в несколько Гб? И в дополнение к ним какую-нибудь старенькую Оперу.
Скачивать видео с ютуба проще с помощью Питон-программы youtube-dl.
Когда-то на машине с 512 Мб памяти постоянно держал кучу открытых вкладок в Опере. Тогда, правда, и сайты были другие.
Ну и по фрагменту кода выше — выглядит ужасно. Позвольте дать вам совет: отделите логику (например, парсинг HTML) от интерфейса (проверки чекбоксов). То есть сделайте отдельный модуль для парсинга HTML, и чтобы он даже не пытался обращаться к каким-либо чекбоксам или элементам интерфейса, а чтобы все нужное ему передавалось бы через аругменты. Ваш код станет и проще поддерживать, и он станет чище. То же самое касается и какой-то другой логики, ее надо отделять от интерфейса.
blackstrip Автор
01.09.2019 00:39Ну и без питона можно. В ссылку youtube.com/… вписываем magic между you и tube — и открывается сайт со ссылками на скачивание. Или еще к youtube.com вначале подписываем ss чтобы получилось ssyoutube.com и тоже открывается другой сайт со ссылками на скачивание. Таких сервисов много.
Шаблон на выдирание ссылок из ютуба — это пример использования скриптов. Можно и другие свои скрипты написать, например, чтобы обрезать большую шапку сайта в исходном коде. Надо только обнаружить какой-то постоянно появляющийся в исходном коде текст, определенный тег, и в скрипт 5 команд записать «получить исходный код», «найти и выделить этот текст в исх.коде», «выйти если не найден», «обрезать все выше выделенного», «загрузить исходный код как текущую страницу».
Вот шаблон на обрезание шапки как раз это делает:
А планшет мой с UEFI и всякими устройствами, на который и XP трудно поставить, и драйвера для которых не найдешь в XP потом. Если бы все просто так было.
blackstrip Автор
01.09.2019 02:36-4А насчет кода — если туда-сюда гонять лишние аргументы в функциях, то они будут все по очереди запихиваться в стек перед переходом в функцию и извлекаться сразу после входа в функцию, это лишние такты процессора и мой браузер станет работать медленнее. Зачем же мне замедление. Обосновано это может быть если только вызов checkBox1.checked вызывает суперфункцию, которая долго мурыжит компоненты на форме (например, ищет checkBox по hwnd среди всех других компонентов). В противном случае checkBox1.checked можно рассматривать как глобальную переменную, незачем ее дублировать в аргументы если она и так доступна для чтения из любого места проги.
eee
01.09.2019 05:31+3Заботится о лишних тактах процессора. Ставит Windows 10. Логика.
Doctor5772
01.09.2019 08:41Вполне можно предположить, что этот вопрос «из коробки» шёл. Однако в данной истории я присоединяюсь к уже частым комментарием вроде «почему бы не поставить Linux?». В данной ситуации Windows 10, хоть как не «оптимизируй», всё равно оставит мало места в ОЗУ. Если вопрос привычки, тогда можно понять почему хочется использовать десятку. Однако с Linux системами можно (при желании и наличии достаточного кол-ва времени) сделать что то удобоваримое, легковестное, и адекватно выходить в сеть. Да, планшеты тем и удобны что можно использовать их для управления без мышек, что бы что нибудь «нарисовать», и как ещё их только не используют. Если графика потянет, почему бы не поставить Gnome3\KDE с настроенными жестами? Софт для «рисования» тоже есть (Krita, Gimp, и иные есть). Нужен консольный текстовый браузер? Links в помощь. Нужен растровый обычный браузер? Есть Firefox.
Я слышал, есть так же android-сборки для X86. Тоже весьма хороший вариант для такого планшета.
Решать, конечно, вам, но Windows 10 на таком железе, подобно выстрелу себе в ногу. А данное интересное поделие из статьи — способ ногу «залатать», но не вылечить.psFitz
02.09.2019 08:28Ага, windows выстрел в ногу, при этом советуете gnome или кеды, которые после старта больше гига выжрут
Doctor5772
02.09.2019 08:45Давно пользовались Linux'ом? Какое то время назад использовал 5-ые кеды через Kubuntu 18.10, общее потребление ОЗУ без фоновых программ — ~400 мегабайт. Притом хочу отметить, использовался проприетарный драйвер Nvidia, на ноутбуке. Что я делаю не так? Если не перегружать «свистелками и перделками», то дефолтное потребление памяти в пределах нормы
DarkNews
02.09.2019 09:30С windows 10 тоже можно много чего сделать, что бы заставить ее удобоваримо работать даже на таком железе.
И даже если на Linux этот планшет будет раза в полтора шустрее, оно того не стоит, ибо менять лучшую ОС (для планшетов так точно, если мы о десктоп осях говорим) на поделие с котором ты провозишься в несколько раз больше, чем для настройки W10, и то скорее всего у тебя куча вещей работать не будет, не будет дров, а потом еще думать — ну вот это я заменю тем, а это этим, ну подумаешь, придется привыкать к 10 новым программам, а еще к 10 аналогов либо не будет, либо они будут неполноценные/неудобные/etc.
На 10 это будет тормозное, но полноценное устройство, со всем софтом, и ограничением будет лишь возможности железа, на линуксе это будет больной кстарат, который еще и у тебя будет головную боль регулярно вызывать, а на андроиде — просто неполноценная бесполезная хрень.Doctor5772
02.09.2019 10:20ОС — инструмент. И настаивать из-за идеологии любой здравомыслящий человек не станет. Я предложил некоторые варианты решения ситуации с недостатком ОЗУ. Решение принимать владельцу планшета, потому что судя по его комментариям, у него осталось представление что «линукс это плохо». Это инструмент, который всё же дорабатывается, и если набор софта на нём будет достаточен для использования планшета, то почему бы и нет? Если нет, десятку можно попытаться оптимизировать. Можно так же отключить патчи от Spectre и Meltdown, которые ощутимо влияют на работу железа (но не в плане памяти, разумеется). Много чего можно сделать, и это здорово, что у нас пока есть возможность подгонять инструменты под себя и своё «железо».
blackstrip Автор
01.09.2019 11:13+1Браузер работает на всех системах. На win95 тоже пашет. Я говорю относительно получающегося кода на выходе, а не относительно ОС в которой идет запуск.
FODD
01.09.2019 11:13Хоть код автора и вызывает рвотный рефлекс, а его высказывания о лишних тактах выглядят смешно, могу кое-что сказать в его защиту.
В статье он упомянал, что у него дешевый планшет. У меня был опыт с похожим. На него обычно нереально где-то скачать драйвера, да и использовать Win7 на планшете — то еще извращение.
Автору же рекомендую поставить Win8 (даже не 8.1), ей на планшете и пользоваться приятнее, и по ресурсам требует на порядок меньшеvortupin
01.09.2019 17:12Автору же рекомендую ...
Возможно, следует рекомендовать более радикальный путь: поработать над собой с годик, освоить вместо допотопной Delphi «расово верный» и коммерчески востребованный ЯП, перестать говнокодить, пройти несколько онлайн курсов по программированию, сменить работу с казенной нищебродской на нормальную коммерческую, и, в финале, быть способным за зарплату одного рабочего дня купить более-менее современный планшет на алиэкспрессе, ну, или же за двухнедельную зарплату Microsoft Surface Book 2?AllexIn
01.09.2019 17:21Delphi классный. Лет пять с него переходил на С++.
Даже сейчас установлен, хотя, конечно, никакого софта на нём уже не пишу. :(
Но так приятно посмотреть на иконку.
bodqhrohro
02.09.2019 04:00Если все будут тратить силы на коммерческую разработку и забивать голову этими вашими квадратно-гнездовыми форматированиями, паттернами, стайлгайдами, фреймворками, инструментами командной разработки, ради потребления красивеньких массовых продуктов в свободное от работы и вбуханных в неё творческих сил время — кто же будет создавать шедевры программистского искусства?
Между прочим, сабж вполне соответствует идеологии экстремального программирования, около которой болтается модный Agile: задача первостепенной важности — выдать на-гора рабочий прототип, а технический долг и потом починить можно, если вообще понадобится. Тут говнокодить можно и даже нужно, потому как любая заминка на «а как правильно?..» чревата потерей энтузиазма и смертью проекта. Энтузиазм за деньги не купишь.
bodqhrohro
02.09.2019 03:46Стоит взглянуть на эту проблему с другой стороны. Раз ресурсы и так уже забиты виндой — зачем забивать их ещё и браузером? «Помирать — так с песней?»
DarkNews
02.09.2019 09:24Ну а что, на ней не нужно об этом заботится?
Или нужно пользоваться планшетом без дров на 7?
Или вообще установить кривую недоделку в виде Linux, и сидеть без дров и там?
Заодно потратив очень много тактов своего мозга на то, что бы его там в принципе заставить удобоваримо работать.
kasthack_phoenix
01.09.2019 09:37Выберите что-то одно — инлайнить код, чтоб избавиться от оверхеда на вызов функций(на самом деле, компилятор с большой вероятностью это сделает для нормального кода там, где вызов функции занимает значительную часть времени) или запрашивать стейт из UI на каждом обращении(мало того, что это смешивание интерфейса и логики, так ещё там внутри и вызовы функций, которые вас так пугают).
blackstrip Автор
01.09.2019 11:07-2тут простой вопрос: checkBox.checked запрашивает сложными процедурами статус флажка или просто выдает значение переменной «чекнуто/не чекнуто». Мне кажется что второе судя по исходникам VCL. В этом случае можно напрямую запрашивать checked свойство (как я и делаю) — это будет самый быстрый метод, аналогичный прочтению глобальной переменной. Дублировать ее куда-то, передавать в аргументах и т.д. — это усложняющий и замедляющий прогу путь.
WannaCode
01.09.2019 12:16Попробуйте на досуге дизассемблировать что-нибудь на Deplhi, поймете, что это капля в море в сравнении со 100 слоями динамических вызовов, которые создает компилятор. Такого рода оптимизации имеют смысл максимум в C++ при компиляции без оптимизации. checkBox1.checked не переменная, это две функции, одна получает значение, а другая устанавливает, и при каждом изменении значения вызываются разные события.
blackstrip Автор
01.09.2019 13:25Сразу уточню что я про Delphi 7.
В VCL прописан набор значений
TCheckBoxState = (cbUnchecked, cbChecked, cbGrayed);
И задан класс TCustomCheckBox, у которого
function GetChecked: Boolean; override; procedure SetChecked(Value: Boolean); override; property Checked: Boolean read GetChecked write SetChecked stored IsCheckedStored default False;
И есть процедуры
function TCustomCheckBox.GetChecked: Boolean; begin Result := State = cbChecked; end; function TButtonControl.IsCheckedStored: Boolean; begin Result := (ActionLink = nil) or not TButtonActionLink(ActionLink).IsCheckedLinked; end;
Таким образом, вызов checkBox1.checked на чтение — это простое сравнение: State сейчас cbChecked или нет.
Это простая выдача значения внутренней чекбоксовской переменной. Поэтому запрашивать checkBox.checked не долго и не страшно.
Я думаю, вопрос по поводу «скорости» работы вызова checkBox.checked теперь исчерпан. Ее можно использовать, она выдает значение внутренней переменной.
Быстрее можно еще если единожды прочитать значения всех checkbox-ов перед парсингом, и потом использовать эти переменные. это уберет лишние CALL/RET на вызов getChecked из кода. На сколько-то процентов (м.б. долей процентов) поднимет скорость парсинга, т.к. там много медленной посимвольной работы с длинными строками, которая гораздо дольше.
Браузер был написан за несколько месяцев, работа по такой тонкой оптимизации еще предстоит (если будет проводиться, если вдруг меня не устроит скорость его работы).alsoijw
01.09.2019 20:31Я думаю, вопрос по поводу «скорости» работы вызова checkBox.checked теперь исчерпан. Ее можно использовать, она выдает значение внутренней переменной.
А вот и нет.
Директива Override определяет метод класса как замена так же названного метода в родительском классе.
Вы можете только отменить классы определенные как виртуальные (virtual) или динамический (dynamic) (последний вне области основ Delphi).
Что такое виртуальный метод?
apro
01.09.2019 15:54+1насчет кода — если туда-сюда гонять лишние аргументы в функциях
Это очень странное представление о том что и сколько стоит с точки зрения процессора.
Присоединюсь к совету синхронизовать ваше преставление о работе CPU с реальным миром.
Например, для i5 @ 2.2Ггц оверхед на вызов функции где-то 3нс,
представьте сколько раз нужно вызывать функцию, что бы это было возможно увидеть человеку? Еще при этом нужно учитывать, что если функцию вызывается только в одном месте, то есть код написан чтобы просто сделать его более простым для поддержки, то оптимизирующий компилятор даже этот оверхед уберет просто сделав 'inline' отптимизацию.
А если функция вызывается два и более раз, то можно даже выигрыш получить, из-за кэша инструкций.
SerJook
01.09.2019 09:05Ему бы еще вменяемый интерфейс.
А вообще автор явно гений. Не испугался и написал собственный браузер.
Восхищаюсь такими людьми. Которые, несмотря на критику, продолжают пилить свой софт.
eshirshov
01.09.2019 20:31+2А я занимался поддержкой, опосля такого-же гения, тот написал, ни много ни мало, свой конструктор графического интерфейса отдалённо похожий на Qt designer(не зная о его существовании). оно вроде и как-то работает, но накуа?
maxzhurkin
01.09.2019 09:26А waterfox или аналогичные "обрезки" чем плохи?
blackstrip Автор
01.09.2019 11:10судя по статье в вики он поддерживает CSS, JS и прочие прелести. Следовательно все недостатки, связанные с обработкой этого всего, у него есть. В JustCode JS и CSS выкидывается и не используется -> не тратится время при загрузке и отрисовке -> браузер работает быстрее и более подходит для бюджетных систем если цель «почитать новости и форумы»
LevOrdabesov
01.09.2019 11:31+1Понимаю автора публикации.
У самого написать свой «html-only» браузер возникает примерно раз в неделю. Современный веб ужасен.
engine9
01.09.2019 12:26+2Снести винду, поставить легковесный линукс. Отключить в браузере яваскрипт (оставив, только ключевые сайти, типа хабра) На гигабайте оперативки полёт нормальный, фаерфокс последний открыто по 5-6 вкладок.
juray
01.09.2019 14:37файл автоматически будет скачан в папку download рядом с EXE-шником браузера
Не очень хорошее решение. В том смысле, что несовместимо с используемой многими админами политикой безопасности с разграничением разрешений на папки для простого пользователя — «для поддерева папок нельзя одновременно разрешать запись и выполнение».
В принципе, выделение отдельной папки Download это уже шаг вперед по сравнению со складыванием в ту же папку, что и exe. Но требует индивидуальной настройки прав для папок, в то время как при типовом подходе «саму программу кладем в ProgramFiles, а все что она пишет — в пользовательский профиль» политика настраивается один раз для поддеревьев.
И когда приходится устанавливать программу, требующую индивидуального подхода — такой админ обычно ругается.
Кстати, на эту политику плюют и гиганты индустрии — например, Гугл, запихивающий экзешник Хрома в пользовательский профиль. (А вот FF разделяет).
saboteur_kiev
01.09.2019 15:32включающих в себя скрипты JavaScript (или даже VB) (которые нужно выполнять после загрузки и по событиям типа «движение мыши над элементом» и др), CSS-стили, фреймы с другими страницами, медиа (картинки, музыку, видео и др.).
А что, если просто:
blackstrip Автор
01.09.2019 16:34
В моем предыдущем браузере Bro, встроенном в PaintCAD 4Windows, были команды для отключения скриптов в IE-движке (справа кнопки J — ява-скрипты, S — все скрипты). Но это не помогает. Неудачная загрузка сайтов на планшете с 1 гигабайтом оперативы на больших сайтах. Видимо, на сложных комбинациях стилей падает.
Narical
01.09.2019 16:58+1Автор, хоть я и имею мнение на тему ваших представлений об опенсорсе, высказывать их не буду — чтобы мой дальнейший комментарий имел шанс быть услышанным, а не отвергнутым сходу как слова очередного хейтера.
Так вот, ваш стиль написания кода (по крайней мере, в приведенных фрагментах) — ужасен. Так как с кодом имеете дело исключительно вы сами, вам кажется что это всё не так уж важно. Тем не менее, есть логика и здравый смысл, которые говорят о том, что плохо написанную программу тяжело поддерживать и развивать. И чем дальше она пишется в таком стиле, тем более вязкой становится кодовая база — каждая новая фича в софте требует всё больше усилий для её внедрения, поскольку под нее надо изменять и прошлый код.
Если у вас это не так, и программу легко дополнять, и не приходится возиться с ранее написанным кодом для внедрения нового — то я конечно извиняюсь и беру свои слова назад, возможно что вы выложили пару самых худших фрагментов, написанных в самом начале проекта, а потом сильно выросли как программист и остальной код намного грамотнее.
Но если нет — я предлагаю вам прочитать книжку «Совершенный код» Стива Макконнелла. Вот про неё на хабре был пост: habr.com/ru/post/77471
blackstrip Автор
01.09.2019 17:14-2Не, это результат эволюции кодописания на протяжении 20 лет. Раньше было еще хуже. Но книгу читать не буду, мне лень. Спасибо. А прогу я не буду развивать особо, доведу до состояния нормальной работы и буду использовать. Я в туалете новости люблю почитать, вот браузер и написал для планшета.
Я мморпг потом буду делать. Вот эту basis.blackstrip.ru, на андроиде в 3D. Сначала хотел в 2D, но сейчас уже код под 3D переписал, там на сайте старые, которые еще 2D, наработки.
Narical
01.09.2019 17:19+5Ну, собственно это и объясняет, почему за 20 лет никакой эволюции не произошло, и уровень кода на уровне школьника )) Засим откланяюсь, пойду поставлю где возможно минусы — они вами вполне заслуженны.
Функция голосования временно заблокирована. Слишком часто минусуешь, %username%
mapron
01.09.2019 20:23-1Чет не очень понял, за что вы ему ставите минуса? просто за то, что «мне не нравится то, что вы делаете?» Мне интересен мотив
Narical
02.09.2019 15:38Я могу привести очень абстрактный пример. Однажды моя знакомая увидела парня, который стоял на остановке и, судя по всему, ждал автобус. Знакомая знала, что остановка, на которой он стоит — с недавнего времени больше не работает, все автобусы останавливаются не доезжая до нее метров 50. Она решила ему сказать об этом, просто на всякий случай. Знаете что он ответил? 100% точная цитата: «Нахуй пошла!»
Когда я сталкиваюсь с таким поведением, мне очень сложно бороться с эмоциями. Когда я писал комментарий, я желал автору добра. Он в ответ в меня плюнул. Ну, я не хочу видеть такого человека в сообществе хабра, у меня есть для этого инструмент, я им пользуюсь.blackstrip Автор
02.09.2019 16:15Ничо не плюнул. Просто не люблю любителей книжонок всяких «а вот книжечку почитайте, там какой-то ноунейм (один из сотни таких же, где каждый со своим мнением) со своей колокольни описал основы табуляции в Дельфи, совершенный код и мироустройство вселенной». Вам понравилось, вы и читайте. А мне неохота. «Не хочу».
Narical
02.09.2019 16:311. Вы заблуждаетесь
2. Ваш второй комментарий тоже полон желчи и желания оскорбить собеседникаblackstrip Автор
02.09.2019 16:40Ну а как вы думали, что на такой текст вам ответят:
«ваш стиль написания кода (по крайней мере, в приведенных фрагментах) — ужасен»
"***вода а ля сложнонаписанный код плохо читается, а простонаписанный — хорошо, а ведь вы этого не знали, а я такой дохрена умный пришел вам это рассказать***"
«я предлагаю вам прочитать книжку «Совершенный код» Стива Макконнелла»
Что вам на это ответить. «Спасибо, сэр, я буду совершенствоваться и от каждого ноунейма принимать предложения и книжки по философии, которые ему понравились, читать». У меня времени на это не хватит. Реальность такова.
Написал бы человек по простому «вон там табуляции нет, а я привык к ней, а вот здесь checked вызывается, а бы заранее его считал и использовал переменную с этим значением для ускорения» — и не было бы проблем. Код-то плевый в три строки а ля a = b+c, а щеки надуваем на метр кубический. Кто щеки надувает — тот мне не товарищ.
Пост давно не первый пишу, но на Хабре не иссякает поток таких дворян как Вы. Поэтому мне приходится так действовать. Причем давно не писал, ушел на всякие пикабу и прочие подобные. Попробовал сюда разок пост закинуть. Результат: концентрация зашквара упала, но где-то еще 50 на 50 нормальные люди и дворяне остались. Спадет ли все до нормальных людей, которые будут радоваться простым вещам и смотреть кто что творит и как это выглядит, а не тонуть в необоснованном снобизме, завышенном ЧСВ и напыщенном судействе? Хз.michael_vostrikov
03.09.2019 10:18+1Что вам на это ответить
"Спасибо, возможно прочитаю, раз многие более опытные программисты ее советуют. Я согласен, что мой код может плохо восприниматься посторонними, но так как я не планировал открывать исходники, то использую то форматирование, которое удобно мне". Вежливо и понятно. Это сложно? Нет. Вы могли так написать? Могли, но не захотели. В той форме, в которой вы написали, это и есть снобизм и завышенное ЧСВ.
blackstrip Автор
03.09.2019 11:31Наш диалог вкратце:
- ты #&@, читай мою любимую книжку
- сам ты &@#, ты кто такой ваще? напиши конкретно что ты хочешь? а книжку себе засунь куда-нибудь поглубже
- ах ты хам, почему не ответил мне вежливо? трудно?
michael_vostrikov
03.09.2019 14:41+1Не знаю, откуда вы взяли первое предложение. В первом комментарии этой ветки черным по белому написана вежливая фраза "Если у вас это не так, то я конечно извиняюсь и беру свои слова назад".
Второе предложение это хамство с вашей стороны. В любом варианте. А особенно в том, который есть по факту, с вежливым общением вашего собеседника.
Поэтому да, возникает вопрос в третьем. Вам трудно?
blackstrip Автор
03.09.2019 15:19Ну подумайте, раз не знаете. Перечитайте ваш первый коммент еще раз. Носом водить вас по словам не будут. Не надо выеживаться и никто посылать вас не будет.
1. Аргументированная критика. «По моему скромному мнению, ваш код ужасен потому что...» и по пунктам что вам не нравится. Если вам не нравится отсутствие табуляции — то меня подводит автоматика (пошло еще с java2me) и я вместо этого «табулирую» комментами после «end;», что помогает в IDE где нельзя «свернуть» кусок кода между begin-end или подсмотреть что там наверху перед begin — понять к какому месту относится end. Это подробнее показано здесь: habr.com/ru/post/465709/?reply_to=20582095#comment_20577065. Если остальной код вас пугает типа «if checkBox1.checked then a=a+b» — то я не знаю что вам посоветовать, т.к. это обычный дельфи-код.
2. Не лейте воды. «Плохо написанную программу тяжело поддерживать и развивать. И чем дальше она пишется в таком стиле, тем более вязкой становится кодовая база — каждая новая фича в софте требует всё больше усилий для её внедрения, поскольку под нее надо изменять и прошлый код.» — очевидно даже любому идиоту. Видите, вы решили надменно кого-то учить — а теперь приходится учить вас. Это нормально. Как там «не говорите что мне делать — и я не скажу куда вам идти».
3. Ну и про книжки я уже писал. Тут аналогично «не говорите что мне делать — и я не скажу куда вам идти».michael_vostrikov
03.09.2019 16:29+1и по пунктам что вам не нравится
Вам и сказали, что не нравится. Причем несколько разных людей в разных комментариях. В обсуждаемом комментарии это обозначено словами "стиль написания кода". Вы хотите, чтобы каждый одно и то же в свой комментарий скопировал?
Если вам не нравится отсутствие табуляции — то меня подводит автоматика
Абсолютно неважно, что вас подводит. Вам высказали вежливое замечание, вы ответили хамством.
Аргументированная критика.
Не лейте воды.То, что процитировано во втором пункте, это и есть аргументированная критика. Зачем вы ее просите, если она вам не нужна?
очевидно даже любому идиоту
Любому идиоту так же очевидно, что по этим причинам писать код в таком стиле не надо. Но вы пишете, значит для вас это неочевидно.
Видите, вы решили надменно кого-то учить
Вы же сами просили аргументированную критику. Аргументированная критика не бывает без объяснений. Без объяснений бывает только неаргументированная критика. Получается, что вы аргументированную критику вообще не воспринимаете ни в каком виде. Вот именно поэтому это и есть снобизм и завышенное ЧСВ.
не говорите что мне делать
Вам не говорили, а предложили.
Ну и про книжки я уже писал.
Ну и что с того, что вы писали? Ваш ответ не становится от этого менее хамским.
vortupin
04.09.2019 06:00Никита, ну, не надо, а? Твой первый комментарий был просто переполнен ЧСВ, и желанием унизить автора-говнокодера, снисходительно похлопав его по плечу ;) А ведь ты же, вроде, взрослый человек, даром, что кармодрочер — please, face a facts!
P.S. Даже просмотрев краем глаза твои говностатейки, должен сказать, что в плане флейма они здорово проигрывают топикстартеровским! Администрация хабра идет неверным путем — если тут останутся только такие, как ты, то других здесь и не будет, от слова «вообще» :D
blackbird_ru
01.09.2019 17:45+1Это приятель свиборга и гнома?
blackstrip Автор
01.09.2019 17:46это Брит-рыцарь.
вот еще трейлер
AllexIn
01.09.2019 17:22+2Так как с кодом имеете дело исключительно вы сами, вам кажется что это всё не так уж важно.
Так автор же профессионально связан с разработкой софта.
Так что скорее всего не только он… Интересно было бы посмотреть на код написанный на работе.FForth
01.09.2019 19:40+1В этом комментарии
автор указал, что не работает программистом.AllexIn
01.09.2019 19:42+1Но с разработкой софта связан.
Если не программист, то кто же он… Хотя, не прогер — уже хорошо.mapron
01.09.2019 20:20Не работает программистом, разрабатывает софт для себя. Можно же программировать и не быть наемным работником, или нельзя?
AllexIn
01.09.2019 20:23Если он просто прогер для себя — то половина комментариев не актуальна.
В качестве хобби человек может писать как ему захочется и критиковать его за говнокод также бессмысленно как человека по вечерам выпиливающего лобзиком за то, что он не знает основ столярного дела.mapron
01.09.2019 20:25Ну я почти уверен что коммерческой разработкой (по крайней мере, по найму) он не занимался, и подходил именно с этих позиций. Да, есть пара токсичных комментариев про FOSS, я им только минуса поставил, но не более того — в остальном позиция автора статьи понятна, у меня к нему никаких претензий нет.
Jogger
02.09.2019 09:55+2Пока человек пишет только для себя — да, нет смысла критиковать. Но когда человек решает что может написать об этом статью на хабр — критиковать сразу можно и нужно. А когда этот же человек ругает опенсорс за низкое качество, и при этом считает, что его код — высокого качества, и его кто-то захочет украсть (!) если его выложить в открытом виде — то такого человека можно ещё и стебать, потому что у человека несомненная мания величия. На самом деле, если его код выложить в открытом виде — никто не позарится, потому что чем в нём разбираться — проще и быстрее самому написать.
petuhov_k
02.09.2019 10:16+1Мании величия нет, но какие-то проблемы психологического плана явно присутствуют. Человек в «глухой» обороне. Критику и советы не воспринимает: «мне так удобно», «книгу читать не буду, лень». Его собственное объяснение по поводу OS содержит массу противоречий. Я уверен, что на самом деле в open source он не выкладывает по причине боязни критики.
Стебать, т.е. унижать и высмеивать недостатки такого человека (и любого другого человека), считаю низким и уж точно неуместным на этом ресурсе (как и вся эта ветка с бессмысленным спором тролей, но НЛО давно улетело...)
perfect_genius
01.09.2019 19:41Куда дальше будете развивать? Или список хотелок большой будет?
blackstrip Автор
01.09.2019 19:53+1Я с апреля уже делаю его (история разработки blackstrip.ru/phpBB2/viewtopic.php?f=8&t=765 ), первый этап, на котором закладывается основа — вроде бы пройден.
А дальше пока больших идей нет. По результатам использования будет видно чего еще не хватает.Blaine_Mono
01.09.2019 20:25Подождите, вы же идейный противник опенсорса. Почему же ваш сайт работает на phpBB, в описании которого сказано «THE #1 FREE, OPEN SOURCE BULLETIN BOARD SOFTWARE»?
Почему если вы считаете опенсорс чем-то плохим — продолжаете пользоваться ПО которое распространяется по лицензии GPL v2?
Купили бы какой-нибудь проприетарный движок и использовали бы его, были бы уверены в качестве кода).mapron
01.09.2019 20:38Зачем вы ерничаете, я чет не видел что он противник всего опенсорса. Только противник самому в нем участвовать. Он сказал, если прога опенсорсная — ее упрут. phpBB — опенсорсный. Автор его упёр. Что не так-то, логика не нарушена, согласно его утверждениям?)
Blaine_Mono
01.09.2019 20:48Имхо, открытый код придумали ленивые кодеры, копипастящие все и вся из чужих проектов в свой проект, именно поэтому их код не представляет никакой ценности, т.к. это франкенштейн из кучи чужих проектов. Молодцы те, кто это продвинули — это надо было так объегорить кучу людей «делайте, старайтесь и выкладывайте просто так» — и народ повёлся. Теперь тем, кто это продвинул, можно безнаказанно тырить чужие проги, не париться дизассемблировать, понимать, разбираться, а просто брать готовые исходники и использовать у себя. Удобно чо. Правда в результате такого зоопарка исходники превращаются в редкостное и нормальный человек в них и разбираться не будет, тысячи форков от Васей и Петей из 6Б — кому они нужны?
Отлаженный, вылизанный и быстроработающий код — всем нужен. Но он закрыт. Так что пользуйтесь результатами работы зоопарка.
Например. Прямо говорит что опенсорсный код некачественный по определению и придумали его ленивые кодеры, а сам опенсорсный код не представляет никакой ценности. Но почему-то им пользуется, то есть для него этот код ценность представляет.mapron
01.09.2019 20:50Я понял его позицию, что сам он лично не будет разбираться в FOSS исходниках. Вообще да, нотка двуличия тут ощущается, но это не «идейный противник», это скорее просто тупо «хаятель», не более того. Из серии «ну вот я это считаю говном, но сам я идеальный движок пока не написал, поэтому пока возьму это говно», я хз как у человека в голове это укладывается)
Blaine_Mono
01.09.2019 22:22Понимаете, если бы он сказал «Не хочу выкладывать в опенсорс, просто не хочу, и все. Хотите выложить свой код — пожалуйста, выкладывайте. Если ваша программа будет хорошей и опенсорсной — буду пользоваться.», я бы и не стал писать свой комментарий с вопросом об используемом движке его сайте.
Но он имеет позицию «опенсорс придумали ленивые кодеры, и код в опенсорсе получается плохим, потому что он открытый, а вот проприетарный код качественный по определению». Поэтому я и задаю ему неудобные вопросы.
Вот что мешало ему взять и купить лицензию на качественный потому что проприетарный 1С: Битрикс за чуть менее пяти тысяч рублей?
tmin10
02.09.2019 11:42Не «упёр», а воспользовался наработками комьюнити в своих целях. Копирайты и название никто же не менял.
blackstrip Автор
01.09.2019 20:53Ну можно свой форум написать было. Но когда я начал его использовать — я не умел ни в php, ни в SQL, ни в JS.
Я идейный противник групп странных людей, которые советуют программные наработки выкладывать и раздавать всем. Я не вижу выгоды от такого выкладывания.
А брать готовые исходники из сети и класть хрен на воображаемые «лицензии» — это я могу с легкостью. Но использовать в своих программах я их не буду, не люблю плагиат. А как готовую приспособу использовать — это можно. Этот форум для меня не набор исходников по какой-то там лицензии GPL v147, а утилита для ведения некоторого подобия блога/журнала разработки. Всем раздают — я беру.Blaine_Mono
01.09.2019 21:05Вы могли бы купить 1C: Битрикс. Сейчас по акции можно купить лицензию всего за 4968 рублей. Он по определению лучше, потому что проприетарен.
Если вы такой идейный противник групп странных людей, которые советуют программные наработки выкладывать и раздавать всем, то не надо использовать наработки этих людей. А то это выглядит странно
michael_vostrikov
01.09.2019 21:08Я не вижу выгоды от такого выкладывания.
Как это не видите, если вы сознательно использовали его для получения выгоды? Это описано у вас в первом абзаце.
perfect_genius
01.09.2019 21:31Не видит выгоды выкладывающему.
michael_vostrikov
01.09.2019 21:36Хм, так сложно представить, что выкладывающий может себя представить на месте использующего?
Jogger
02.09.2019 15:16+1Всем раздают — я беру.
Блин, я всё думал, что же мне напоминает ваше отношение к опенсорсу. А теперь вспомнил.blackstrip Автор
02.09.2019 16:23-1Я не смотрю что это опенсорс или просто исходник на каком-то сайте. Беру и использую по назначению (если бесплатная прога или бесплатный готовый такой форум — то запускаю и использую, если фрагмент исходника — то изучаю, и в сочетании с другими аналогичными собираю воедино, правлю, встраиваю у себя).
Или вы хотите мне запретить запускать проги и использовать алгоритмы из инета потому что я негативно отношусь к группам школьников, которые собравшись вместе пытаются (и думают что у них получается) написать качественный программный продукт? а потом разбредаются и снова в других сочетаниях лепят еще и еще, выкладывают, обмениваются этим всем, тут дописал, там дописал, там поправил, здесь добавил, ни одной своей проги толком нет, и так живут, гордо именуя себя разработчиками софта с открытым исходным кодом. Я не хочу быть таким, мне это неинтересно и скучно.Blaine_Mono
02.09.2019 21:01А зачем вам изучать плохой код? Чему можно научиться читая плохой код?
blackstrip Автор
02.09.2019 22:28Берешь три плохих, тестишь по очереди, соединяешь кусок оттуда, кусок отсюда, тестишь, провал, соединяешь кусок отсюда, кусок оттуда, тестишь, успех — вуаля, получаешь один, но свой и хороший
FForth
03.09.2019 11:00+1А, если сразу появится возможность «стырить» весь функционал подходящей программы — это Вас остановит?
P.S. Или действуете по принципу нипеля — туда дуй, оттуда х…
Да и авторам переделанных кусков кода, возможно, было бы интересно посмотреть на изменения в дизайне их ПО.
Jogger
02.09.2019 23:06+1Никто вам не пытается ничего запретить. Хоть на голове стойте.
Но непонятно, зачем вы пользуетесь софтом, написанным группами школьников, который к тому же считаете некачественным, да ещё, о ужас, изучаете его и встраиваете его у себя(!). Это что, такая ментальная копрофилия? Или может быть дело в том, что ваш код ещё хуже (а это — факт), чем у этих школьников (и это, к слову, объясняет ваше нежелание его выкладывать, в отличии от ваших доводов).blackstrip Автор
02.09.2019 23:35Код я не выкладываю вот по этой причине: habr.com/ru/post/465709/#comment_20577809 (вкратце — потому что никогда не выкладывал и считаю это глупым и ненужным, невыгодным занятием).
Первая группа школьников пишет отстойный софт и выкладывает открытым. Вторая группа школьников пишет тоже плохой софт и выкладывает открытым. С третьей по девятую тоже пишут плохой софт и выкладывают его открытым. А десятая группа хороших опытных специалистов пишет хороший софт и выкладывает его.
Вот софт от десятой группы я использую (форум phpbb). Ничего так написали, честь им и хвала что умеют писать и дают использовать всем подряд. Аналогично как и использую бесплатные проприетарные программы с закрытым исходным кодом, тоже честь им и хвала. Но как бы хорошо не писала десятая группа — остальные девять это плохой софт.
И когда мне говорят «посмотри на них, они же выкладывают, выкладывай тоже» — я, мягко говоря, удивлен. Их методы написания софта можно назвать «лебедь, рак и щука», как будто википедию пишут, один пишет, второй стирает, третий с угла дописывает, четвертый следит за этим кое-как и пытается управлять/принимать/отклонять/читать и понимать их писульки, в итоге из проекта с большинством плохих разношерстных программеров на выходе выйдет так себе код.
dominigato
01.09.2019 20:32-1Я надеюсь blackstrip.ru хостится на винде? А то в линуксе же надо компилировать всё и ничего не работает.
blackstrip Автор
01.09.2019 21:00вот хорошая статья про линукс forum.homedistiller.ru/index.php?topic=61513.0
dominigato
01.09.2019 21:22Я даже не собираюсь ходить по вашим ссылкам. Вы хостите на винде blackstrip.ru или нет?
ainoneko
02.09.2019 09:51Я даже не собираюсь ходить по вашим ссылкам.
Там у него два раза перепощеннная заметка ЛЛео "За что я ненавижу Линукс" 2008 года про плохую Убунту.
metaprog
01.09.2019 21:50Планшет с гигом памяти? На Windows 10? XP не пробовал поставить? Если станет — будет летать и меньше жрать места.
blackstrip Автор
01.09.2019 22:21Уже был подобный вопрос habr.com/ru/post/465709/#comment_20573449
Ответ там был: «А планшет мой с UEFI и всякими устройствами, на который и XP трудно поставить, и драйвера для которых не найдешь в XP потом. Если бы все просто так было.»
bodqhrohro
02.09.2019 02:47Раз уж пошла такая пьянка, стоит упомянуть J2ME-браузер Minuet. Очень похож на сабж, тоже грузит только HTML и в один столбик.
Ещё могу порекомендовать автору NetSurf. Он не настолько аскетичный (стили поддерживает), но явно легче движка от IE, если сабжа для чего-то не хватит. Dillo рекомендовать не буду, он, похоже, так толком на винду и не портирован.
andersong
02.09.2019 10:05В связи с тем, что веб стал такой прожорливый до ресурсов, может быть имеет смысл уже в формировании страниц удаленно, а конечному юзеру давать готовую картинку, как делают игровые сервисы?
Alex_Sage
02.09.2019 12:48В этом что-то есть. Я правильно понимаю, после реализации идеи будут существовать разные версии страниц на сайте (по оформлению и дизайну), сгенерированные для каждой платформы и каждого устройства? Я в таком случае за. Это как сидеть с ноута через m.vk.com, только лучше :D
andersong
02.09.2019 12:59Формированием страницы должен заниматься не сайт (он тебе нагенерит...) а подконтрольный именно тебе ресурс, вырезающий то, что тебе не нужно и отдающий лишь легкую, удобную лично тебе выжимку.
Alex_Sage
02.09.2019 19:29Я, кажется, пользуюсь одним таким «ресурсом», он как раз всю рекламу с просматриваемых сайтов вырезает :)
Только проблема в том, что это «ресурс» начинает сам есть, как тот сайт в исходном, не подчищенном виде. Получается дилемма: либо сайту скормить последние мегабайты ОЗУ, либо сайту скормить те крошки, которые остаются при работающем блокировщике (это я, конечно, утрирую).
Alex_Sage
02.09.2019 12:57Радует, что не я один такой фигнёй страдаю :)
Так вышло, что 2 месяца назад я закончил и выложил на JSFiddle свою программу для просмотра записей любой открытой группы ВКонтакте. Загружается быстро, тормозит только при загрузке фоток, но самое интересное — у меня тоже вложения открываются отдельно от стены записей, сначала виден чисто текст и ссылки. Пишу не на Дельфи, но работает она на всех Windows, начиная с XP.
Phantom91x
02.09.2019 13:27Прочитал статью думал вот автор молодец не лень же было так заморочиться, пойду посмотрю что получилось… Далее читаю комментарии автора и полностью меняю свое мнение.
В чем вообще смысл статьи если нет исходников? Думать что кто-то может украсть данный код я даже не представляю, как вообще такое в голову может придти?
На самом деле думаю настоящая причина того что кода нет в том, что он написан плохо и его страшно выкладывать(сужу по отрывку кода в комментариях выше без оформления и табуляции).
Вообще когда делаешь то, что собираешься выложить на всеобщее обозрение, обычно в такие моменты получается самый чистый и качественный код. Поэтому все выпады автора в сторону Open Source мне непонятны. Вы точно работаете в программировании?blackstrip Автор
02.09.2019 13:37Давайте-ка отвыкайте от халявы. Это проприетарное ПО, как и остальные «продукты» BlackStrip Studios, исходники в комплекте не идут. Чего тут непонятного?
Стыдно бывает когда выкладываешь периодически что-нибудь и пытаешься совершенствовать написание исходников чтобы другим они были все более понятны, прозрачны и удобны для прочтения, и думаешь «о, мой уровень пока еще низок по сравнению с Васей Опенсорсовым, не буду выкладывать». Я же за исключением пары-тройки небольших алгоритмов никаких исходников никогда не выкладывал, только наоборот чужие изучал, переписывал, правил и т.п.
Поэтому у меня даже мысли такой не было «бояться что код плохой», потому что код другим простым смертным по умолчанию недоступен. Ну и я вообще не понимаю на кой хрен везде раздавать свой код, это глупо (имхо), это собственные наработки, которые войдут в последующие проекты, особенно ценны они только для самого создателя, т.к. это результат его долгого и упорного развития, обучения работы с различными устройствами, приемов работы с компонентами, приемов оптимизации отрисовки по скорости и т.д., и т.п.
И никто не говорил что я работаю в программировании. Наоборот уже в десяти местах в комментах к этому посту написано что я там не работаю, а это просто хобби)Ded_Banzai
02.09.2019 14:04Да ну бросьте, какая еще халява?
Я уверен, что я не один такой, кто прочитал статью и в чьей голове возникла пара-тройка идей по расширению функционала и хватает знаний и умений для их воплощений. Неплохая возможность позволить комьюнити создавать кучи плагинов и аддонов на все случаи жизни. Но это ваше право — не выкладывать исходники, хотя мотивация весьма странная и противоречивая.
michael_vostrikov
02.09.2019 14:47Чего тут непонятного?
Это вы похоже не понимаете. В статьях типа "смотрите какую клевую штуку я сделал" хорошим тоном считается предоставление исходников. Насколько я знаю, на Хабре так было всегда. Причины есть разные, от любопытства до доказательства отстустсвия вредоносного кода, но дело не в этом, а в том что это вы делаете необщепринятые вещи, поэтому не надо удивляться и обвинять других. Сказали, что не выложите, объяснили причины, и всё, не надо учить других. Аналогов вашей "халявы" полно.
К слову о вредоносном коде, на virustotal на вашу программу один антивирус ругается, а на распакованную UPX аж четыре. Может вы на самом деле неплохо умеете пользоваться JMP-ами, просто скрываете? Без исходников это не проверить.
blackstrip Автор
02.09.2019 16:34«Считается», «было всегда» — только ничем не подкрепленные слова.
На UPX всегда антивирусы ругались, хотя он и с открытым исходным кодом, но антивирусы никак не допилят чтобы они upx-а не боялись. Поэтому, на многие мои проги ругаются всякие эвристики (а я все UPX-ом пакую, мой любимый запаковщик исполняемых файлов).michael_vostrikov
02.09.2019 18:02«Считается», «было всегда» — только ничем не подкрепленные слова.
Так, и чем же, интересно, их надо подкреплять и в какой форме? Уж не в виде ли количества аналогичных статей на Хабре с открытыми и закрытыми исходниками? Ну так открывайте главную и проверяйте, я же не могу привести все такие статьи за все время существования Хабра в комментарии.
Второе предложение вообще начинается со слов "насколько я знаю". Это по определению не достоверный факт, а описание известной информации. Почему я должен вам свои знания подтверждать? А еще про завышенное ЧСВ других пишете.
На UPX всегда антивирусы ругались
"а на распакованную UPX аж четыре". После распаковки, на нормальный чистый экзешник.
Но вопрос не в этом, а в том, что на слово вам никто не должен верить. Ни вам, ни кому-то еще. И исходники позволяют подтвердить, что в программе нет никаких вирусов. Это одна из причин, почему их ожидают увидеть.
FForth
02.09.2019 18:13Так эта программа, за недоказанностью обратного, содержит следы вирусов? (раз антивирусы ругаются)
blackstrip Автор
02.09.2019 22:35Конечно есть вероятность что в каком-то левом браузере, особенно в который вы вводите пароли и логины своих учеток и логинитесь на сайтах/форумах, содержится код, который сливает все это прямиком хозяину. Поэтому браузеру даже с открытыми исходниками нельзя верить (вдруг в исходниках будет чистый код, а в exe-шнике — такой же, но с добавленными вирусами, а собирать самому будет лень). А в случае если исходников нет — тем более вероятность есть. Поэтому только слежение за трафиком во время работы браузера, а также дизассемблирование проги с внимательным просмотром кода оградит вас от подобного исхода. «Не доверяй никому» (с) андеды.
У меня на чистый незапакованный exe-шник никто не ругается. А после запаковки UPX многие антивирусы могут ругаться, я тоже на virustotal гонял этот сжатый UPX-ом браузер несколько месяцев назад и удивлялся какого хрена в нем что-то видят некоторые антивирусы, причем каждый антивирус (из ложно сработавших пары-тройки антивирусов) видит там вирусы с разными названиями. Одному одно показалось, второму второе, третьему третье.Ded_Banzai
03.09.2019 07:27Поэтому браузеру даже с открытыми исходниками нельзя верить (вдруг в исходниках будет чистый код, а в exe-шнике — такой же, но с добавленными вирусами, а собирать самому будет лень)
Именно поэтому официальные exe очень подписаны сертификатом, да еще и отдельно хэш проверяется.
michael_vostrikov
03.09.2019 10:12+1Поэтому только слежение за трафиком во время работы браузера
Сначала запустить подозрительную программу, а потом проверять наличие в ней вирусов? Какой-то подозрительный совет от автора программы, на которую ругаются антивирусы.
а собирать самому будет лень
а также дизассемблирование проги с внимательным просмотром кодаСобирать значит по условиям лень, а дизассемблировать должно быть не лень? Для получения того же результата гораздо проще внимательно просмотреть исходники, скомпилировать и сравнить побайтово или по хешу. Вы же сами там выше доказывали, что с исходниками все проще, для любых целей.
У меня на чистый незапакованный exe-шник никто не ругается.
"Там вирусов нет, честно-честно". Ссылку на virustotal, пожалуйста, с анализом вашего exe-шника.
Arkanium77
02.09.2019 13:27Мне кажется проделана достаточно интересная работа, по крайней мере, самому автору было интересно этим заниматься и это заметно.
На счёт практической ценности — кто знает. У меня тоже есть хреновый планшет на восьмёрке. Может пригодится.
Но мне, все же, не очень близок такой подход. Я, вот, очень люблю современный read view, который во всех браузерах есть. Хотел даже расширение сделать, чтоб только в нем сайты открывались, но, как выяснилось, не выйдет сразу открыть ссылку в rv, сначала полностью грузится страница, а потом она парсится в rv. А жаль
kom09
02.09.2019 13:27Господа, а не присоветуете браузер для Windows XP c 1Гб оперативки? Чтобы хоть как-то можно было открыть современные сайты без бешеного торможения. Главную страницу Яндекса и его же почту, например.
Alex_Sage
02.09.2019 14:56У нас стоит 12 компов с Win XP, стоят там Chrome и Yandex.Browser, оба нормально работают, держат все вкладки, не вылетают.
Кстати, всё-таки файл подкачки нужен. Я тоже сидел месяц с выключенным, Хром так и вылетал (синий экран был), аж три репорта за 2 месяца вышло.
Gryphon88
02.09.2019 14:08Можете пояснить для сетевого придурка, в чем заключается причина «прожорливости» браузера? Можно ли кэшировать уже загруженный «обвес» сайтов и перенаправлять обработку медиаобъектов на установленные специализированные программы (т.е. играть то же видео через vlc, например), а не тащить кучу жаваскриптовщины?
bodqhrohro
02.09.2019 15:01в чем заключается причина «прожорливости» браузера?
Динамичность. Любые страницы сложнее статики нельзя просто взять и отрендерить в один присест. Надо держать в памяти DOM, надо выполнять скрипты, надо перерендеривать на каждый чих страницу, даже на декларативные CSS-анимации безо всяких скриптов, а ещё переупорядочивать элементы, когда что-то от таких динамических изменений разъехалось. А ещё есть такая «замечательная» фича, как contenteditable, благодаря которой браузеры ещё и редакторами Rich Text быть обязаны, как Word. В современных браузерах ещё и изоляция усиливается, чтобы с важных вкладок типа онлайн-банкинга ничего не упёрли. Всё это отнюдь не способствует низкому ресурсопотреблению.(т.е. играть то же видео через vlc, например)
На заре веба так и делали — сами браузеры видео играть не умели, оно вставлялось на страницы тегом <object> или <embed>, и воспроизводилось плагином, подключаемым через ActiveX или NPAPI. Такие плагины есть у VLC, у QuickTime, даже у Windows Media Player. Но у такого подхода есть фатальный недостаток — сайт со своей стороны не может взаимодействовать с плеером, и уж тем более не может его кастомизировать. Поэтому в 00-х обрели популярность плееры на Flash — они вставляются так же, но Flash-приложение имеет свой UI, и может взаимодействовать со скриптами сайта через атрибуты тега.
С появлением стандарта HTML5 в браузерах появилась поддержка воспроизведения видео без плагинов — через отдельный тег <video>. Делают они это, конечно, не сами, и скрипты тут ни при чём — видео воспроизводится через существующие кодеки и медиабиблиотеки, системные либо поставляемые с браузером. Но скрипты, опять-таки, могут гибко взаимодействовать с HTML5-видео, благодаря чему можно делать кастомные плееры — а можно не делать. К сожалению, по сравнению с плагинами плееров, в HTML5-видео набор поддерживаемых форматов и кодеков очень ограничен, ради переносимости. Играть что угодно через тег <video> умеет только Safari для macOS, потому что использует «под капотом» всё тот же универсальный QuickTime.
Мною сделана страничка с демонстрацией разных способов встраивания. Открывать желательно в чём-то не очень новом и в то же время не очень старом, типа Opera 12 или Pale Moon, чтобы поддерживались все способы. Ибо технология плагинов объявлена устаревшей и в современных браузерах их поддержка выкидывается.
Alex_Sage
02.09.2019 15:10С аудио-видео соглашусь, грузит конкретно.
А вот от кучи жаваскриптовщины нам, видимо, никак не получится избавится. Все навороты браузера встроенные, все загружаются при запуске, обрабатываются зачем-то. И потом ещё сайты с их 20-30 скриптами.
Думаю, это программисты С++ и C# в веб ушли, пишут там как могут. Знаю, что есть транспилятор/транспайлер Babel, который упрощает код, переводя кучу синтаксического сахара и вызывающих друг друга функций и более простую для JS-движка кучу. Но вряд ли все компании им пользуются, раз эту кучу скриптов никто не хочет переделывать.Gryphon88
02.09.2019 16:02bodqhrohro, Alex_Sage Насколько я понимаю, страница (за вычетом медиа) отдаётся как plain text, без прекомпилированных бинарников, т.е. у нас есть возможность оптимизировать выполнение скриптов (оттранслировать, агрегировать запросы, подменить на локальные программы/библиотеки, скомпилировать под платформу, etc) или перевести представление страницы в другое, разменяв пропускную способность канала, такты и оперативку на место на диске, благо его обычно относительно много. В качестве примера — старый вордовый формат doc. Он ужасен, но по сравнении с docx требует меньше ресурсов на обработку. Ну не ждать же, что веб-программисты станут делать лучшие страницы :)
bodqhrohro
02.09.2019 17:30т.е. у нас есть возможность оптимизировать выполнение скриптов
Вы всерьёз полагаете, что браузеры этого ещё не делают? ;-) Все последние лет 10 — постоянное вылизывание производительности браузеров, в том числе JS-движков. Но и этого мало. Попробуйте запустить какой-нибудь современный прожорливый сайт в IE8 (из тех, которые его вообще поддерживают ещё) — разница с современными движками налицо будет.агрегировать запросы
Привет HTTP/2 и GraphQL.подменить на локальные программы/библиотеки
Бессмысленно, веб живёт «в своём мире». Более того — лишние нативные вызовы только ухудшат производительность.скомпилировать под платформу
JIT именно это и делает. А то и кэширует. Chromium-based-браузеры, например, создают целую папочку «Code Cache».или перевести представление страницы в другое
Вышеупомянутые Opera Mini и brow.sh так и делают. Но у этого подхода есть недостаток — представление и реальные web-технологии неизбежно будут различаться, где-то не состыковываться, где-то устаревать, где-то просто не покрывать все возможности из-за ограничений представления. И все сайты работать не будут.В качестве примера — старый вордовый формат doc. Он ужасен, но по сравнении с docx требует меньше ресурсов на обработку
Я далеко не первый раз встречаю подобное мнение от кодеров «старой закалки», имеющих очень смутное представление о современном вебе. Грозятся: «ух-х-х, макаки грёбаные, не могут плейнтекст быстро пропарсить, вот я сейчас крутой SAX-парсер сделаю, всё летать будет!.. да вот только времени нету». Сабж наглядно демонстрирует, что получится, когда угрозы перейдут к практике ;-)Gryphon88
02.09.2019 18:00Если всё всё делают, чего ж так хреново?) Отдельный вопрос о том, что должен сделать программист, а что крутится на стороне браузера, тот же GraphQL хорошая штука, но должен использоваться при создании сайта.
Более того — лишние нативные вызовы только ухудшат производительность.
Вот я готов аналог Unreal Engine в браузере таскать, если это позволит агрегировать системные вызовы.
или перевести представление страницы в другое
вот я сейчас крутой SAX-парсер сделаю, всё летать будет!.
Я про представление другое спрашиваю: уже понятно, что DOM с кучей динамичных элементов и стилей не получается быстро разобрать. Почему, раз его спарсив, не пересохранить и кэшировать в другом формате, который парсится быстрее?
Я не считаю себя самым умным, просто хочу разобраться. Вот я не очень плохо программирую под микроконтроллеры, читал и осознал «Книгу мага», понимаю принципы llvm, помню характеристики и возможности компьютеров в 90х — а вот почему на одном и том же компе я могу без лагов играть в трёх-четырёхлетнюю RTS, но не могу комфортно пользоваться средним интернет-магазином уже не понимаю. Кажется, что хотя многие задачи уже решили, но почему-то решили заново прыгнуть на старые грабли.Alex_Sage
02.09.2019 19:21DOM с кучей динамичных элементов… быстро разобрать
пересохранить и кэшировать в другом формате, который парсится быстрее
Ты мне сейчас напомнил про разреженные массивы. Ведь и вправду все эти стили и DOM-ы можно держать в сжатом формате, если выкинуть все константы и неменяющиеся переменные (точнее, наоборот: хранить массив с нужными значениями и их названиями).
Только странно, что это ещё никто не реализовал. Ну или мы не замечаем.
заново прыгнуть на старые грабли
Мне почему-то кажется, что эти прыжки на грабли — часть маркетинговой стратегии всех корпораций. Они ждут пару годков, а потом заявляют: «Вот, мы разработали новые грабли, которые при прыжке бьют на целых 20% слабее». А пользователи, которые побогаче, начинают радостно махать кошельками и скупать новые грабли :)Gryphon88
02.09.2019 23:43А я подумал про AST/CST и как они используются в метапрограммировании и сохраняются/передаются/модифицируются в ANTLR, например.
bodqhrohro
03.09.2019 00:23если выкинуть все константы и неменяющиеся переменные
Во, уже Virtual DOM переизобрели. Что ещё переизобретёте? :3Gryphon88
03.09.2019 12:04Что ещё переизобретёте? :3
Вы так говорите, будто это что-то плохое. Проведем небольшой мозговой штурм, на хабре много мозговых штурмовиков, бомбардировщиков и истребителей, вдруг что-то новое родим.
Virtual/shadow DOM хорошие технологии, но, опять же, их должен использовать веб-программист.
Есть ЯП, которые не требуют знания собственно программирования свыше самоучителя, только предметной области: MATLAB, COBOL, Fortran, LabView, Maple, WolframAlpha… Т.е. знание программирования ускоряет скорость исполнения и снижает потребление ресурсов, но не всегда — там под капотом мощный оптимизатор. В С/С++ можно не учитывать архитектуру памяти и работать с плоской моделью, компилятор разберётся и ещё с оптимизациями поможет. Большинство сайтов делаются торопливо, небрежно и «шоб бохато», может, стоит легализовать такой подход ценой усложнения браузера? Да, код написанный и код исполняемый будут совсем непохожи друг на друга, но разве это важно, если тесты проходят? Я вот тоже плохо узнаю свой код после -О3.bodqhrohro
03.09.2019 13:27Virtual/shadow DOM хорошие технологии, но, опять же, их должен использовать веб-программист
Отнюдь, подобные техники применяются и в движках. V8, например, кэширует доступ к частоиспользуемым свойствам объектов.может, стоит легализовать такой подход ценой усложнения браузера?
Он давно легализирован. И как раз в этом и проблема. Владельцы наколеночных сайтов не заинтересованы в производительности (более того, у продаванов существуют поверия, что слишком быстрый отклик выглядит для пользователя подозрительным, поэтому в запущенных случаях задержки вставляются искусственно). Они заинтересованы напихать побольше дерьма для повышения дохода, а производительность является лишь сдерживающим фактором, чтобы не напихать его ещё больше. Метрики измерения человеко-машинных интерфейсов привязаны к не зависящим от производительности факторам (количество кликов, время и т.д.) Пока это не изменится — вылизывать движки бессмысленно и даже вредно.
bodqhrohro
03.09.2019 00:16чего ж так хреново?)
Слишком много легаси и неудачных решений, чтобы это всё хорошо работало для современных задач. Но это постепенно решается, потому как над совместимостью сейчас особо не парятся. Запросто могут ломать вещи, которые работали годами, типа вызова всплывающих окон или воспроизведения звука.тот же GraphQL хорошая штука, но должен использоваться при создании сайта
И тут мы приходим к другой проблеме — профессионально сделанных сайтов крайне мало. Большинство собрано тяп-ляп из готовых компонентов. В худшем случае — во всяких конструкторах или на готовых CMS.Вот я готов аналог Unreal Engine в браузере таскать
В IE через ActiveX можно было DLL-ки дёргать. В Firefox тоже, но только из аддонов (XPCOM). Но такой подход умер, ибо некроссплатформенно и дыряво. Браузерные API и так достаточно низкоуровневые, они не поверх того же интерпретатора крутятся, как в Emacs, например, а просто обёртки над нативным кодом. А в WebGL и вовсе настоящий GLSL используется, без обёрток, куда уж нативнее?Почему, раз его спарсив, не пересохранить и кэшировать в другом формате, который парсится быстрее?
А смысл кэшировать то, что постоянно меняется?Кажется, что хотя многие задачи уже решили, но почему-то решили заново прыгнуть на старые грабли
Отнюдь, просто с ростом производительности и возможностей растут и требования, так что софт в целом делает вроде бы всё то ж, что и лет 30 назад, а жрёт на порядки больше. Типичный интернет-магазин 90-х — каталог статики почти без интерактивности. Сейчас куда ни плюнь — навешано тонны дерьмища по принципу «у конкурентов так же — надо не отставать». О чём недавно была статья. Да в принципе, и лет 10 назад было так же, просто тогда всякие перделки делали на Flash, и прожорливость подобных сайтов решалась его отключением. А сейчас используются встроенные возможности браузеров, избирательно отключить которые уже не так просто.
bodqhrohro
02.09.2019 17:16Но вряд ли все компании им пользуются, раз эту кучу скриптов никто не хочет переделывать
Если не пользоваться — скрипты как раз будут работать чуть быстрее, но перестанут работать в старых и маргинальных браузерах. Разницу в синтаксисе нельзя компенсировать полифиллами. На заре существования Babel он поддерживал транспилляцию «на лету», чтобы отдавать браузерам одинаковый код и транспиллировать только при надобности — но за маловостребованностью и сложностью поддержки этот режим выпилили.
0xd34df00d
03.09.2019 18:00Думаю, это программисты С++ и C# в веб ушли, пишут там как могут.
Что-то вот сейчас как программисту на C++ было обидно. Непонятно, с чего б мне так писать под веб, если бы я туда пошел (да и, собственно, на моих полутора сайтах ни грамма джаваскрипта, а генерируемая хаскелем статика).
0ther
03.09.2019 14:53Адский ужас.
Глаза вытекли, мозг завис — зачем делать свою поделку, которая заведомо хуже вылощенного тысячами глаз опенсорса?
Слабое железо? Unix же, среди кучи дистрибутивов что-то, да есть.
Just forlulzimprove skills? Комментарии опровергают это.
В минус, короче говоря.blackstrip Автор
03.09.2019 15:26Затем что это софт под Windows. А линукс идет лесом, комменты это подтверждают habr.com/ru/post/465709/?reply_to=20582149#comment_20576635
Да и, собственно, не вижу хаба «Линукс» в моем посте. Линукс это для 1-2% людей на Земле (статистика это подтверждает). А Windows — для всех пользователей, кто хочет с удобством играть и работать за компутером.
ledocool
Справа полоска прокрутки очень жирная. А так мне нравится. Вообще вещи вроде links исчаю довольно занятными и прикольными. Никак не пойму, чего это вэб укатился в эти ваши картиночки?
CapricornTV
На сколько я понял, это специально для пальцевого использования на планшете, как раз должно быть удобно так крутить страницу.