[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: music, vector, image, code, pdf, flash, archive, text, video
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.36161 Ответ [Открыть тред]
Файл: 125860969610249.jpg
Jpg, 39.86 KB, 300×100 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
125860969610249.jpg
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
Доска посвящена созданию программ и всему, что с ним связано. Для обсуждения готовых программ, железа, устройств есть доска >>/lor/

Простые реквесты для ньюфагов >>28288
Помощь начинающим >>44688 (новый)
Оффициальный™ Лунного Сахара тред >>43581

Языки программирования:
Haskell >>35693
Lisp >>29402
Assembler >>32929
C++ >>43511
Java >>46281
C# и .Net >>27510
Perl >>37854
Python >>46029
PHP >>23225
JavaScript >>40541
Pascal/Delphi >>37645
Golang >>48143

Фреймворки и библиотеки:
Ruby on Rails >>31319
Qt >>31597

Инструменты:
Vim >>33881
Emacs >>36714
Системы контроля версий >>28005

Прочие технологии:
SQL >>29820

Информатика:
Стеганография >>35350

"Кафедра сайтостроя": тред тут в /s >>31137 и тред в /u >>u/104773
Game Development тред тут >>39943 "Кафедра гейм-девелопмента" в /u: >>u/60525
Сообщение слишком длинное. Полная версия. Post was modified last time at 2017-09-26 21:53:58


No.49696 Ответ [Открыть тред]
Файл: tumblr_inline_ml09rkrmWH1qz4rgp.gif
Gif, 151.78 KB, 400×267 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tumblr_inline_ml09rkrmWH1qz4rgp.gif
Тред помощи начинающим свой долгий и тернистый путь в дебри программирования. А также необузданных оленей, код-мартышек, выбора ЯП и иных платиновых вещей.
Но в первую очередь всё-таки помощи новичкам. Всё, чтобы зашедший сюда в первый раз мог почувствовать себя как дома.
Главное - без фанатизма.

Предыдущий: >>47927
53 posts are omitted, из них 13 с файлами. Развернуть тред.
>> No.49923 Ответ
Хочу попробовать этово вашево ООП, но есть вопросы, так как более полугода изучаю, пишу на чистом Си и многие моменты мне непонятны.
Вопрос 1:
С++ от С отличается лишь классами и некардинальными переделками стандартных библиотек? А также наличием богатого выбора среди фреймворков?
Вопрос 2
Классы это теже сишные структуры, но с полями адресов функций (а то и самих тушек функций)? Алсо часть полей может торчать наружу для линковки, а часть статична и тем самым достигается инкапсуляция?
Вопрос 3
Если использовать привычные принтфы заместо что-там<<стдин, то буду ругать, бить по лицу?
>> No.49924 Ответ
>>49923
> С++ от С отличается лишь классами и некардинальными переделками стандартных библиотек? А также наличием богатого выбора среди фреймворков
Нет, плюсы отличаются от чистой сишечки очень сильно. Особенно с С++11. Читай про умные указатели, ссылки, классы и подобное.

> Алсо часть полей может торчать наружу для линковки
Все торчит наружу. Поэтому часто изменения в приватных функциях будут преводить к перекомпиляции всех зависимостей. Инкапсуляция только на уровне компилятора.

> Если использовать привычные принтфы заместо что-там<<стдин, то буду ругать, бить по лицу?
Будут, как и за явный менеджмент памяти.

Данный ресурс в целом устарел, но полезностей все равно очень много[1]. Основной point of reference[2]. Всю остальную качественную литературу можно найти в два клика в гугле и на либгене.

[1]: https://yosefk.com/c++fqa/index.html
[2]: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
>> No.49925 Ответ
>>49923
> Вопрос 1
В C++ запилили всё то, на что один патриарх Си говорил другому: "Если ты хочешь PL/I, ты знаешь, где его найти." На самом деле, это два разных языка, один из которых с оговорками можно представить подмножеством другого. В C++ помимо классов есть шаблоны, семантика передачи по ссылке, какое-никакое управление памятью, строгая типизация (в Си нестрогая), исключения, лямбды и, наверно, ещё что-нибудь, неймспейсы, например и перегрузка операторов. Сам я выучил Си и так и не приступал к C++, ООП ко мне пришёл из скриптовых языков и gobject.
А, ну и в случае C++ про стабильный ABI ты можешь забыть, весь плюсовый код должен собираться одним компилятором, msvc и gcc подружить просто так не получится.
> Вопрос 2
На сааамом деле, к классам по-хорошему надо подходить не через Си, а через Smalltalk, иначе они для тебя действительно лишь структурки с функциями. Поля адресов функций, кстати, должны быть не указателями внутри структуры, а лежать вовне и только виртуальные методы надо хранить в объекте.
> Вопрос 3
В зависимости от человека. Есть явление C/C++, которым откровенно наплевать, что ты там сделал и пишет на Си с вкраплениями классов, а то и цельный сишный исходник называет плюсами, а есть фанатики C++, которые как раз за выпил макросов, за ООП и за перегрузки с переусложнениями.
>> No.49926 Ответ
Есть ли документация по 4 версиям ядра линукса примерно как на msdn или какая годная книга? Нашел хорошую по третьему ядру, но про четвёртое ядро гугел молчит. С msdn привык что функции документируются нормально, так что пока рыться в исходниках и искать где лежит какая нужная мне штука пока не приспособлен.
>> No.49927 Ответ
>>49926
Ты где по ядру винды документацию видел?
> С msdn привык
Отвыкай, вся документация хранится локально в виде man-страниц или текста в /usr/share/doc, для документации по конкретной версии ядра есть секция man 9 и
> The format for this documentation is called the kernel-doc format. It is documented in this Documentation/kernel-doc-nano-HOWTO.txt file.
утилита kernel-doc, которая её заполняет. Документацию пользователя ядра можно найти онлайн, кодом я не занимался.
> рыться в исходниках
man grep в помощь.
>> No.49928 Ответ
>>49927
> Ты где по ядру винды документацию видел?

Понятно что само ядро закрыто, но доступные интерфейсы взаимодействия описаны хорошо

> Отвыкай, вся документация хранится локально в виде man-страниц или текста в /usr/share/doc, для документации по конкретной версии ядра есть секция man 9 и

> > The format for this documentation is called the kernel-doc format. It is documented in this Documentation/kernel-doc-nano-HOWTO.txt file.

> утилита kernel-doc, которая её заполняет. Документацию пользователя ядра можно найти онлайн, кодом я не занимался.

Понял, благодарю
>> No.49929 Ответ
>>49928
Так все интерфейсы взаимодействия как раз описаны, стоит тебе поискать тот же файлик tuntap.txt и сразу попадёшь на десятки копий документации ядра. Правда, кишки скорее всего описаны либо в kernel-doc, либо в виде существующего кода, поскольку никто особо написанием фреймворков по взаимодействию с ведром не занимался и по части драйверов ядро является сейчас франкенштейном с копипастой. Можно ещё сказать, что хорошей документацией должны являться хэдеры, но опять же, с тобой говорит человек, который в кишки ядра не лез и максимум читал пользовательскую документацию.
>> No.49930 Ответ
>>49927
По ядру винды как раз документация хорошая, причём не нужно ковырять сишные исходники и дёргать гугл на каждую функцию.

> Отвыкай
Нет.

>>49926
Доставь ссылку на документацию по третьей версии. Скорее всего разница между 3 и 4 небольшая, если не требуется что-то специфическое.
>> No.49931 Ответ
Прогромач, а каким образом можно посчитать количество "правильных" ответов, которых возвратил любой метод?
Ну, допустим, есть у меня бот для телеграмма, и я хочу узнать, на какие вопросах бот не находит ответа и возвращает дефолтный ответ
В голову приходит банальный вызов какого-нибудь счётчика в случае "неправильного" ответа, но чёт как-то колхозно. На разных этапах диалога default может быть разный, да и вообще есть разница, сдался ли бот сразу или на высокой вложенности диалога.
Есть ли вообще у той процедуры, что я хочу провести, какие-то названия, чтобы я начал уже погуглить, а не читал статьи для маркетологов и их изменениями конверсии?
>> No.49932 Ответ
>>49931
Ну если твои дефолтные ответы известны все заранее, то в чем проблема поднимать событие, когда этот ответ выдает бот, в этот эвенг складывать всю необходимую для анализа информацию и анализировать ее на стороне объекта, который слушает это событие?


No.29402 Ответ [Открыть тред]
Файл: serial_experiments_lain-14377.jpg
Jpg, 405.57 KB, 1600×1200 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
serial_experiments_lain-14377.jpg
Был удивлён, пролистав за десяток страниц, и не найдя здесь подобного трэда.
Решил начать учить язык богов. С чего начать - книги и мануалы, теория и практика (желательно на русском), в чём лучше писать (под винду и под никсы), советы, распространённые ошибки, всё сюда. Лисп-нить иди.
409 posts are omitted, из них 51 с файлами. Развернуть тред.
>> No.49661 Ответ
>>49655
>>49653
Давай начнём с того, что я не могу себе представить человека, у которого лисп был первым. Кроме пользователя какой-нибудь CAD, но я с такими не общаюсь за их отсутствием.
Так что толстишь тут скорее всего ты, особенно, учитывая то, что краткая характеристика уже в треде есть и не одна.
>> No.49667 Ответ
>>49660
> unix-way lisp-way чем не угодили
Да, нужно бы расшифровать. В данном случае имел ввиду следующие проблемы:
для unix-way - сведение всего к текстовому конвееру, тоесть практически антиподход для случая обработки двоичных данных;
для lisp-way - когда вместо 1МиБ двоичных данных придётся работать с 1 миллионом точечных пар (или как они там в любой книжке по лиспу позиционируются как самый базовый тип данных).

За пример благодарю.
>> No.49668 Ответ
>>49667
> для unix-way - сведение всего к текстовому конвееру, тоесть практически антиподход для случая обработки двоичных данных;
Можно же делать текстовые конвееры с именами отдельных файлов. Это удобней для пакетной обработки, например. Нет, конечно, есть примеры, когда в пайпы долны полезть бинарные данные.

В r5rs векторы есть например. В книжках по лиспу мне не приходилось сталкиваться с совсем уж "двоичными" запакованными данными.
А ещё ко всему есть вариация этих самых списков, где снизу массивы вместо cons-ячеек. Но за это ты платишь неизменяемостью списка.
https://www.gnu.org/software/guile/docs/master/guile.html/VLists.html

Ты не доводи до абсурда же, изо всякого правила есть исключения. Просто текстовые данные проще дёргать из того же шелла, например. Работать с ними проще. И чем больше излишней бинарщины, тем труднее с ней жить. Со списками теми же работать проще, чем неоправданным образом делать ADT или векторы на каждый чих. Как-то так. Но это не значит, что всякая программа обязана быть текстовым фильтром или использовать только списки.
>> No.49669 Ответ
>>49668
Где ты увидел доведение до абсурда? Мне кажется ты проецируешь какие то свои взгляды, например если тебе проще работать с текстом, это не значит что и другим также.

А почему проще? Потому что если попытаться вчитаться в вышеприведённый пример >>49660 окажется что работать с данными таким образом - это боль. Получается что лисп в данном примере показывает себя как язык, не приспособленный для таких задач. Конечно тогда проще не натягивать сову на глобус.

> платишь неизменяемостью списка
Очередное необоснованное ограничение.
>> No.49670 Ответ
>>49669
> Где ты увидел доведение до абсурда?

>>49658
> желательно без lisp-way и unix-way
>>49667
> для unix-way - сведение всего к текстовому конвееру
> для lisp-way - когда вместо 1МиБ двоичных данных придётся работать с 1 миллионом точечных пар (или как они там в любой книжке по лиспу позиционируются как самый базовый тип данных).

Вот доведение до абсурда. У тебя в руках UNIX-подобная система есть? Ты в курсе, что у неё есть библиотеки и остальные программы, которые обрабатывают бинарные данные целиком и полностью и даже пишут в пайпы/стандартные потоки бинарщину? Даже sysvinit слушает пайп /run/initctl, забирая оттуда структуру. Если надо — давай, бери, пользуйся, никто тебе не запрещает, юниксвей — про то, что структуры и байты не надо бездумно совать везде, где придётся. Где можно обойтись текстом, вот там и обходись текстом. У меня же сложилось ощущение, что ты же думаешь, что текст надо пихать везде. Точно то же самое ты говоришь про cons-списки, считая, что тебя насильно заставляют пользоваться ими вместо векторов, особенно для целей, для которых они мало предназначены.

Я уже не говорю, что lisp-way — это оксюморон. У языка с подстраиваемыми языковыми формами никакого way практически нет. Хоть awk с шеллом впиливай прямо внутрь.

> Мне кажется ты проецируешь какие то свои взгляды, например если тебе проще работать с текстом
>>49669
> Где ты увидел доведение до абсурда?

>>49658
> желательно без lisp-way и unix-way
>>49667
> для unix-way - сведение всего к текстовому конвееру
> для lisp-way - когда вместо 1МиБ двоичных данных придётся работать с 1 миллионом точечных пар (или как они там в любой книжке по лиспу позиционируются как самый базовый тип данных).

Вот доведение до абсурда. У тебя в руках UNIX-подобная система есть? Ты в курсе, что у неё есть библиотеки и остальные программы, которые обрабатывают бинарные данные целиком и полностью и даже пишут в пайпы/стандартные потоки бинарщину? Даже sysvinit слушает пайп /run/initctl, забирая оттуда структуру. Если надо — давай, бери, пользуйся, никто тебе не запрещает, юниксвей — про то, что структуры и байты не надо бездумно совать везде, где придётся. Где можно обойтись текстом, вот там и обходись текстом. У меня же сложилось ощущение, что ты же думаешь, что текст надо пихать везде. Точно то же самое ты говоришь про cons-списки, считая, что тебя насильно заставляют пользоваться ими вместо векторов, особенно для целей, для которых они мало предназначены.

Я уже не говорю, что lisp-way — это оксюморон. У языка с подстраиваемыми языковыми формами никакого way практически нет. Хоть awk с шеллом впиливай прямо внутрь.

> Мне кажется ты проецируешь какие то свои взгляды, например если тебе проще работать с текстом
А это не мои взгляды. Это вгляды любого человека, державшего в руках шелл. *nix — это кучка мелких максимально реюзабельных утилит, склеиваемых вместе шеллом. Я этот подход считаю удобным, как и кто-то другой, вот и всё. Не хочешь скреплять шеллом — не скрепляй, никто тебе не запрещает.

> А почему проще? Потому что если попытаться вчитаться в вышеприведённый пример >>49660 окажется что работать с данными таким образом - это боль. Получается что лисп в данном примере показывает себя как язык, не приспособленный для таких задач. Конечно тогда проще не натягивать сову на глобус.

Во-первых, не лисп, а scheme. Scheme вообще не обязан тебе быть приспособлен для всего, особенно со стандартом в 50 страниц. Лисп в целом жил на лисп-машинах как единственный язык и вполне себе обрабатывал всё, что нужно, про common lisp говорить не буду. Но scheme приспособлен приспосабливаться. Я приспособил.

Ящитаю, оформить вот эти мысли из файла как модуль (или просто подключать через include/load) и использовать формы
(bstruct mystruct
(a 1)
(b 2)
(c 8 ->u64 u64->))

(with-mystruct bv
(bv.c newvalue)
(format #t ".a ~a\n.b ~a\n.c ~x\n"
(bv.a)
(bv.b)
(bv.c)))
особого труда не составит. В случае чего можно вполне себе нарисовать врапперы вокруг bytevector-<тип>-native-{ref,set}, особо много это не займёт.

> Очередное необоснованное ограничение.
Честно говоря, мне лень читать исходник и смотреть, почему там неизменяемость, хочешь обоснований — смотри сам. Векторы и так есть, а в основной массе списки обрабатываются без изменения хвоста.
Сообщение слишком длинное. Полная версия.
>> No.49726 Ответ
Файл: 15304474106560.png
Png, 14056.52 KB, 3041×4096 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
15304474106560.png
Позвольте сХОРОнить.
>> No.49870 Ответ
Здравствуйте. Вы живы или умерли? Хочу срач CL vs Scheme в контекте описаний мест работы, где редко, тайком, но используют. Такие, вроде, есть.
>> No.49872 Ответ
>>49726
ЗаХОРОнить.

>>49870
> CL vs Scheme
Что то х~~ня, что это х~~ня.
Как работодателю мозги промоешь, на том и будешь писать.
>> No.49921 Ответ
>> No.49922 Ответ
>>49921
Ты автор этого кода? Используешь этот код?
Почему бы не перенести его прямо сюда, или даже заархивировать тот тред целиком, мало ли пропадёт. Если конечно считаешь, что он может быть полезен. Без метаинформации куски write-only лисп кода не имеют никакого смысла.


No.27510 Ответ [Открыть тред]
Файл: 200px-NET_h_rgb_2...
Png, 17.12 KB, 200×49
edit Find source with google Find source with iqdb
200px-NET_h_rgb_2.png
Файл: 371px-C_sharp.svg...
Png, 6.26 KB, 371×254
edit Find source with google Find source with iqdb
371px-C_sharp.svg.png

Здесь будет ветка обсуждения .net и C#.
И сразу вопрос: какой встроенный класс в C# реализует массив с обращением по индексу за О(1), в котором при этом можно было бы добовлять в конец элементы(аналог vector из С++), и какой соответственно реализует связный список с вставкой элемента в середину и начало и удалением элемента за О(1)(аналог list в С++).
475 posts are omitted, из них 74 с файлами. Развернуть тред.
>> No.49108 Ответ
>> No.49109 Ответ
>>49108
Это старая, упомянутая в посте.
>> No.49900 Ответ
>>27510
Доброкодер, что скажешь о новом .NET Core? Зачем они отделили ядро от стандартной библиотеки? Модно или практично? Сыро или стабильно? Дипломный проект или коммершиал?
>> No.49910 Ответ
>>49900
> новом .NET Core
Ты о коре в целом или какой-то последней версии (хотя это теперь снова "просто" .Net 5)?
>> No.49911 Ответ
Я вот побегал по собесам...
А есть ли тут синиоры-помидоры интервьюеры? Прособесите меня на... ну пусть будет синиорную позицию веб фулстек?
>> No.49912 Ответ
Файл: 1381398671594.jpg
Jpg, 101.70 KB, 400×400 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1381398671594.jpg
>>49911
Ты делал тестовые задания. Никто с тобой и срать рядом не сядет, вот да.
>> No.49913 Ответ
>>49912
Чевокаво?
К чему ты это крякнул?
>> No.49915 Ответ
Файл: kirpich_127384164...
Jpg, 41.27 KB, 600×327
edit Find source with google Find source with iqdb
kirpich_127384164_orig_.jpg
Файл: 1611058957400.png
Png, 1.24 KB, 300×20
edit Find source with google Find source with iqdb
1611058957400.png

>>49913
Вон из профессии.
>> No.49916 Ответ
>>49915
Почему?
>> No.49917 Ответ
>>49912
Как ты определил что он делал тестовые задания?


No.49719 Ответ [Открыть тред]
Файл: cirno-s-computer-science-class-sicp.jpg
Jpg, 174.71 KB, 1355×882 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
cirno-s-computer-science-class-sicp.jpg
Здесь я буду собирать и делиться интересными и очень блогпостами, записями с конферений и публикациями.

Проблема восьми королев, решенная с помощью типов. Вариант с шаблонами на плюсах прилагается в комментариях:
https://aphyr.com/posts/342-typing-the-technical-interview

Использование экзистенциальных типов и CPS для написания безопасных zero-cost API:
https://dl.acm.org/doi/10.1145/3299711.3242755

SPJ о линейных типах. В теории, мы должны их увидеть в 9-ой версии GHC.
https://www.youtube.com/watch?v=t0mhvd3-60Y
17 posts are omitted, из них 2 с файлами. Развернуть тред.
>> No.49779 Ответ
>>49763
https://keldysh.ru/papers/2018/prep2018_111.pdf - вот обзорная статья по суперкомпиляции
> Делается попытка «выполнить» программу не для конкретных входныхданных, а «символически» в «общем» виде, то есть для произвольныхвходных данных. Ну или для всех входных данных, удовлетворяющих каким-то ограничениям. Для этого строится «дерево конфигураций» (=«дерево процессов»). В узлах дерева находятся «конфигурации», кото-рые описывают множества состояний вычислительного процесса. По-нятно, что эти множества должны быть описаны на каком-то языке,и могут быть не вполне точными («прихватывать» что-то лишнее). А стрелки, связывающие узлы дерева, соответствуют каким-то действиями проверкам, происходящим при исполнении программы.

https://sergei-romanenko.github.io/scp-notes-ru/ и вот еще.

Я считаю что это достаточно интересное направление
>> No.49783 Ответ
Файл: porovozik.png
Png, 136.47 KB, 662×556 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
porovozik.png
>>49779
> Я считаю что это достаточно интересное направление
А я считаю, что моск аффтара достаточно суперкомпилирован токсоплазмой.
Когда на вашем супер-языке найдут хотя бы элемент в массиве, тогда и приходи!!!!!111ы
>> No.49784 Ответ
>>49779
Спасибо, я посмотрю обязательно!

В последнее время читаю страшные вещи вот тут:
http://comonad.com/reader/

Практически ничего непонятно, и нагнетает сильно. Формального математического образования очень не хватает.
>> No.49808 Ответ
>> No.49835 Ответ
Файл: 4317119750_4d5c719004.jpg
Jpg, 39.13 KB, 500×449 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
4317119750_4d5c719004.jpg
>>49719
Ну? Где мои интересности?
>> No.49837 Ответ
Файл: e98f78899ee18eda12326c79.jpg
Jpg, 201.74 KB, 900×540 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
e98f78899ee18eda12326c79.jpg
>>49835
Прости, я почти ничего не читаю в эти сумбурные времена!
Узнал только про интересный проект, позволяющий компилировать полиморфные функции без указателей и без специализации. В README тут более подробно. Интересно, насколько это может иметь смысл добавить в уже существующие функциональные языки.

https://github.com/ollef/sixten#compared-to-other-languages
>> No.49901 Ответ
>>49719
Я несколько лет постил полезности и интересности в офисный чат. Каждый раз меня называли спамером, который отвлекает от работы. Почти через год рандомный сотрудник вспоминал про старые сообщения начинал активно юзать. Не бросай этот тред.
>> No.49902 Ответ
>>49719
Google Remote Desktop для удаленки на карантине
>> No.49904 Ответ
>> No.49905 Ответ
Файл: IMG_20181006_172845.jpg
Jpg, 537.96 KB, 2592×1944 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
IMG_20181006_172845.jpg
>>49901
Из софтовых интересностей нашел gallery-dl и TMSU для удобной загрузки, хранения и поиска картинок по тегам.

https://github.com/mikf/gallery-dl
https://github.com/oniony/TMSU

По CS недавно появился канал на ютубе, рассказывающий в небольших видео о шероховатостях ghc. И из последнего прочитанного понравились блогпосты об экзистенциальных и линейных типах.

https://www.youtube.com/channel/UCI1Z201n-8OelkSg0DVOsng
https://blog.sumtypeofway.com/posts/existential-haskell.html
https://www.tweag.io/blog/2020-11-11-linear-dps/


No.48832 Ответ [Открыть тред]
Файл: pg087.png
Png, 23.35 KB, 475×349
edit Find source with google Find source with iqdb
pg087.png
Файл: pg072.png
Png, 56.58 KB, 515×709
edit Find source with google Find source with iqdb
pg072.png
Файл: 14686072547160.png
Png, 44.08 KB, 1024×450
edit Find source with google Find source with iqdb
14686072547160.png

Как понять ООП? Я просто вот не понимаю, зачем это нужно. Безотносительно языка программирования

Вот допустим есть некие классы, классы как в плюсах. Есть методы, которые к этим классам привязаны. Зачем это вообще нужно, если можно просто сделать структуру и набор функций, которые могут с этими структурами нечто осмысленное делать?

Вот допустим есть public private protected модификаторы доступа т.е. ограничения на то, откуда какой метод можно вызывать. public можно вызывать отовсюду, private только для методов из числа public, а protected ... protected становится private при наследовании, притом наследований может быть 3 вида - тоже public, private, protected... Зачем всё это? Чем это лучше просто кучи функций, которые могут просто вызывать другие функции и работать с какими-то структурами?

Или вот методы, методы это функции, которые привязаны к конкретной структуре, но что если мне нужны методы, которые связывают два разных класса? Например это может код, переводящий из вектора в растровую картинку. Этот код должен быть методом класса для растровой или векторной картинки?
87 posts are omitted, из них 6 с файлами. Развернуть тред.
>> No.49846 Ответ
>>49845
> Остаётся наследование. Вот это уже чистая ООПешная тема.
А трейты (trait, интерфейсы с возможностью объявлять дефолтные реализации методов) относятся к наследованию?
А typeclass из Хаскеля?
Видимо наследование есть не только в ООП, или в ООП есть своё ООП-шное определение наследования.
>> No.49847 Ответ
>>49846
В ООП-шном наследовании можно унаследовать переопределённую реализацию метода.
С трейтами и тайпклассами это сделать не так просто, как в ООП.
>> No.49873 Ответ
>>49845
> Путь второй, он же очевидный и неправильный: class Rectangle extends Shape и class Square extends Rectangle
Просто ты очевидный быдлокодер. С какого хуя у тебя Rectangle имеет метод на увеличение параметров магическими цифрами? Почему ты лезешь напрямую в данные вместо вызова сеттеров? А потому что ты отстреливающий себе ногу быдлокодер.
virtual bool Rectangle::scale(int xScale, int yScale) {...}
bool Square::scale(int xScale, int yScale) override
{
if (xScale != yScale)
return false
else
return this->scale(xScale);
}
>> No.49874 Ответ
>>49873
Ну да, можно и так. Простите, был неправ. Забыл, что любую проблему можно обойти наговнокодив костылей.
Что вот у тебя за bool там такой? Откуда он взялся? Ах, он тут затем, чтобы это хоть как-то работало? Вопрос тебе: у тебя есть класс Shape; тебе нужно написать класс Rectangle; квадраты ещё не изобрели, и о том, что тебе понадобится класс Square ты узнаешь только через полгода - будет ли твой scale возвращать bool?
Далее, как ты думаешь, сколько постов на форуме твоей либы будут содержать вопрос "почему Square::scale принимает два параметра, при том, что они должны быть равны, и если они не равны, то ошибка (может быть) вылезет только в рантайме"?
Это всё "фиксится" перегрузкой scale для одного аргумента и выбросом исключения, вот только
а) исключение нарушает LSP,
б) перегрузка функций к ооп не имеет отношения - это языкоспецифическое средство починить пролему ооп,
в) оригинальный scale всё ещё останется и всё ещё будет принимать два аргумента.

>>49873
Ну да, можно и так. Простите, был неправ. Забыл, что любую проблему можно обойти наговнокодив костылей.
Что вот у тебя за bool там такой? Откуда он взялся? Ах, он тут затем, чтобы это хоть как-то работало? Вопрос тебе: у тебя есть класс Shape; тебе нужно написать класс Rectangle; квадраты ещё не изобрели, и о том, что тебе понадобится класс Square ты узнаешь только через полгода - будет ли твой scale возвращать bool?
Далее, как ты думаешь, сколько постов на форуме твоей либы будут содержать вопрос "почему Square::scale принимает два параметра, при том, что они должны быть равны, и если они не равны, то ошибка (может быть) вылезет только в рантайме"?
Это всё "фиксится" перегрузкой scale для одного аргумента и выбросом исключения, вот только
а) исключение нарушает LSP,
б) перегрузка функций к ооп не имеет отношения - это языкоспецифическое средство починить пролему ооп,
в) оригинальный scale всё ещё останется и всё ещё будет принимать два аргумента.

Но, самое главное, что даже с этим твоим костылём ты всё ещё нарушаешь LSP, просто ты это относительно неплохо спрятал под коврик, и оно теперь почти незаметно. Напомню: объект дочернего класса должен иметь возможность быть подставленным ВЕЗДЕ, где требуется объект родительского БЕЗ ИЗМЕНЕНИЯ ПОВЕДЕНИЯ программы. Есть у тебя функция сделать_мост, которая принимает прямоугольники, меняет ему размер на 3м х 10м, поворачивает и кладёт поперёк ущелья. Кто-то потом передаёт туда квадрат. Он не масштабируется. Функция кладёт его поперёк ущелья. Он падает. Ты ступаешь на несуществующий мост и падаешь вниз. Тебя съедают крокодилы. А всё потому что ты наслушался маркетологов.
Единственное, что ты тут можешь сделать - это начать вилять хвостом, что надо было проверять возвращаемые значения. Но это так не работает, потому что твой дочерний класс всё ещё ограничивает родительский - поведение всегда будет меняться в тех случаях, когда код делает что-то, что затрагивает эти ограничения. Как только ты ограничил родителя - ты уже проиграл.

Вообще, я тут поумничать решил, и оригинальная идея была о наследовании класса Tree от BinaryTree (книга это была, или статья какая - не помню, но если кто-то узнал, дайте ссылку или ключевые слова), но пример с фигурами мне показался чуть более наглядным.
Сообщение слишком длинное. Полная версия.
>> No.49875 Ответ
>>49874
> Что вот у тебя за bool там такой? Откуда он взялся? Ах, он тут затем, чтобы это хоть как-то работало?
Так ты все-таки проектируешь иерархию классов и допускаешь, что метод может сфейлить? Или быдлокодишь и ноешь про "костыли", отстрелив себе ногу "да не, оно не может сфейлить, хуяк-хуяк return void -> бля, сфейлило, чертово ООП!"? Хотя тут и так все понятно, что тут спрашивать.
> Вопрос тебе: у тебя есть класс Shape; тебе нужно написать класс Rectangle; квадраты ещё не изобрели, и о том, что тебе понадобится класс Square ты узнаешь только через полгода - будет ли твой scale возвращать bool?
Типичный подход быдлокодера, как и было предсказано. Я уж молчу про подготовку проекта перед кодированием, сраные UML, IDEF0 и прочая, но подумать своей башкой, что не все Rectangle можно успешно отскейлить на разные множители по разным координатам, ты мог? Или для тебя внезапно оказалось открытием: епта, хуе-мое, квадрат тоже прямоугольник, нам этого в школе не рассказывали! Проклятое ООП!
> Далее, как ты думаешь, сколько постов на форуме твоей либы будут содержать вопрос "почему Square::scale принимает два параметра, при том, что они должны быть равны, и если они не равны, то ошибка (может быть) вылезет только в рантайме"?
Я бы на форуме таких говнокодеров банил на месяц в ридонли, если они такие тупые, что не видят перегруженный метод и не ебут, что такое наследование от базового класса, но пиздят что-то про ООП.
> исключение нарушает LSP
Поэтому не будь быдлокодером и не пиши быдлокодерские иерархии с return void. Внезапно, и исключения не понадобятся.
>>49874
> Что вот у тебя за bool там такой? Откуда он взялся? Ах, он тут затем, чтобы это хоть как-то работало?
Так ты все-таки проектируешь иерархию классов и допускаешь, что метод может сфейлить? Или быдлокодишь и ноешь про "костыли", отстрелив себе ногу "да не, оно не может сфейлить, хуяк-хуяк return void -> бля, сфейлило, чертово ООП!"? Хотя тут и так все понятно, что тут спрашивать.
> Вопрос тебе: у тебя есть класс Shape; тебе нужно написать класс Rectangle; квадраты ещё не изобрели, и о том, что тебе понадобится класс Square ты узнаешь только через полгода - будет ли твой scale возвращать bool?
Типичный подход быдлокодера, как и было предсказано. Я уж молчу про подготовку проекта перед кодированием, сраные UML, IDEF0 и прочая, но подумать своей башкой, что не все Rectangle можно успешно отскейлить на разные множители по разным координатам, ты мог? Или для тебя внезапно оказалось открытием: епта, хуе-мое, квадрат тоже прямоугольник, нам этого в школе не рассказывали! Проклятое ООП!
> Далее, как ты думаешь, сколько постов на форуме твоей либы будут содержать вопрос "почему Square::scale принимает два параметра, при том, что они должны быть равны, и если они не равны, то ошибка (может быть) вылезет только в рантайме"?
Я бы на форуме таких говнокодеров банил на месяц в ридонли, если они такие тупые, что не видят перегруженный метод и не ебут, что такое наследование от базового класса, но пиздят что-то про ООП.
> исключение нарушает LSP
Поэтому не будь быдлокодером и не пиши быдлокодерские иерархии с return void. Внезапно, и исключения не понадобятся.
> перегрузка функций к ооп не имеет отношения - это языкоспецифическое средство починить пролему ооп
Это вообще сахар для удобства, наркоман, оно ничего не чинит.
> оригинальный scale всё ещё останется и всё ещё будет принимать два аргумента.
И? Клятое ООП не дает тебе сломать ООП? Ты тут двумя строками ранее LSP для красного словца нагуглил?
> Но, самое главное, что даже с этим твоим костылём ты всё ещё нарушаешь LSP, просто ты это относительно неплохо спрятал под коврик, и оно теперь почти незаметно. Напомню: объект дочернего класса должен иметь возможность быть подставленным ВЕЗДЕ, где требуется объект родительского БЕЗ ИЗМЕНЕНИЯ ПОВЕДЕНИЯ программы.
Напомню, что ничего не нарушается. Если ты такой быдлокодер, что по юности и недалекости своей думаешь, что у тебя любая операция всегда сработает, то я выебу твой scale переполнением.
> Есть у тебя функция сделать_мост, которая принимает прямоугольники, меняет ему размер на 3м х 10м, поворачивает и кладёт поперёк ущелья. Кто-то потом передаёт туда квадрат. Он не масштабируется. Функция кладёт его поперёк ущелья. Он падает. Ты ступаешь на несуществующий мост и падаешь вниз. Тебя съедают крокодилы. А всё потому что ты наслушался маркетологов.
Вот поэтому, дети, таких джунов гонят ссаными тряпками на первом же code review, и не подпускают потом этих макак дальше ардуинки в кофеварках китайских ноунеймов.
> Вообще, я тут поумничать решил
Ты сфейлил, бро.
Сообщение слишком длинное. Полная версия.
>> No.49876 Ответ
>>49875
ОК, я проигнорирую всё начало (хотя тут много чего можно сказать), кроме нескольких основных пунктов.
> Или для тебя внезапно оказалось открытием: епта, хуе-мое, квадрат тоже прямоугольник
Именно так. Потому что на момент проектирования квадраты не изобрели. Их не существует физически. Появятся они только через полгода, когда код уже написан.
> Я бы на форуме
Знаешь, что такое "протекающие абстракции"? Нет? Ну, теперь знаешь, потому что это пример прямо из палаты мер и весов.
> Напомню, что ничего не нарушается.
Я тебе ещё раз говорю: не важно, проверяешь ли ты там что-то где-то или нет. Для начала ещё раз перечитай LSP, и теперь я объясню сразу на наглядном примере:
Вот есть такой код:
``fun sdelat_most( Rectangle r ) {
if ( r.scale( 3, 10 ) ) print( "Most sdelan" )
else print( "Oshibka" )
}
Rectangle rect = new Rectangle( 3, 3 )
sdelat_most( rect )``
>>49875
ОК, я проигнорирую всё начало (хотя тут много чего можно сказать), кроме нескольких основных пунктов.
> Или для тебя внезапно оказалось открытием: епта, хуе-мое, квадрат тоже прямоугольник
Именно так. Потому что на момент проектирования квадраты не изобрели. Их не существует физически. Появятся они только через полгода, когда код уже написан.
> Я бы на форуме
Знаешь, что такое "протекающие абстракции"? Нет? Ну, теперь знаешь, потому что это пример прямо из палаты мер и весов.
> Напомню, что ничего не нарушается.
Я тебе ещё раз говорю: не важно, проверяешь ли ты там что-то где-то или нет. Для начала ещё раз перечитай LSP, и теперь я объясню сразу на наглядном примере:
Вот есть такой код:
``fun sdelat_most( Rectangle r ) {
if ( r.scale( 3, 10 ) ) print( "Most sdelan" )
else print( "Oshibka" )
}
Rectangle rect = new Rectangle( 3, 3 )
sdelat_most( rect )``
Мы его запускаем и он печатает "Most sdelan". Теперь мы подменяем родительский объект на дочерний ``Rectangle rect = new Square( 3 )``, запускаем, и код печатает "Oshibka". Поведение программы изменилось, а по LSP этого быть не должно. А можно проще, без лишних функций (у тебя же сеттеры отнаследовались):
``Rectangle rect = new Rectangle( 3, 3 )
rect.set_width( 4 )
rect.set_height( 5 )
assert( rect.get_area() == 20 )
print( "Ok" )``
Это печатает "Ok". Заменяем прямоугольник на квадрат и он падает с assertion failure. А не должен.
Наследование Square от Rectangle нарушает LSP, что в свою очередь означает несоответствие твоего кода принципам SOLID, что в свою очередь делает говнокодером тебя, а не меня.
QED
Сообщение слишком длинное. Полная версия.
>> No.49877 Ответ
>>49876
> ОК, я проигнорирую всё начало
как обосраться и не подать виду.тхт
> Именно так. Потому что на момент проектирования квадраты не изобрели. Их не существует физически. Появятся они только через полгода, когда код уже написан.
Чо-чо? Проектирование интерфейсов? Изучение предметной области? Зачем, когда можно хуяк-хуяк и в продакшн!
Эээ, пан заказчик, это не я наобезьянил, это все ООП! Только по лицу не бейте!
> Знаешь, что такое "протекающие абстракции"? Нет? Ну, теперь знаешь, потому что это пример прямо из палаты мер и весов.
Нет, просто твои абстракции кривые и предусматривают только common cases. А опытный разработчик тем и отличается от джуна, что сразу предусматривает редкие случаи. Поэтому джуны и не проектируют API.
> Вот есть такой код
Это быдлокод, еще раз тебе говорю.
> Это печатает "Ok". Заменяем прямоугольник на квадрат и он падает с assertion failure. А не должен.
А кроме написания быдлокода ты еще и не понимаешь, что такое LSP.
Rectangle rect = new Rectangle( INTMAX, 3INTMAX)
Rectangle нарушает Rectangle! LSP! OOP! SOLID! Вы все быдлокодеры, а я нет, уиииии!
> print( "Most sdelan" ) else print( "Oshibka" )
>>49876
> ОК, я проигнорирую всё начало
как обосраться и не подать виду.тхт
> Именно так. Потому что на момент проектирования квадраты не изобрели. Их не существует физически. Появятся они только через полгода, когда код уже написан.
Чо-чо? Проектирование интерфейсов? Изучение предметной области? Зачем, когда можно хуяк-хуяк и в продакшн!
Эээ, пан заказчик, это не я наобезьянил, это все ООП! Только по лицу не бейте!
> Знаешь, что такое "протекающие абстракции"? Нет? Ну, теперь знаешь, потому что это пример прямо из палаты мер и весов.
Нет, просто твои абстракции кривые и предусматривают только common cases. А опытный разработчик тем и отличается от джуна, что сразу предусматривает редкие случаи. Поэтому джуны и не проектируют API.
> Вот есть такой код
Это быдлокод, еще раз тебе говорю.
> Это печатает "Ok". Заменяем прямоугольник на квадрат и он падает с assertion failure. А не должен.
А кроме написания быдлокода ты еще и не понимаешь, что такое LSP.
Rectangle rect = new Rectangle( INTMAX, 3INTMAX)
Rectangle нарушает Rectangle! LSP! OOP! SOLID! Вы все быдлокодеры, а я нет, уиииии!
> print( "Most sdelan" ) else print( "Oshibka" )
> fun sdelat_most
Блядский блядь, и я еще на это трачу время, пиздец просто.
Сообщение слишком длинное. Полная версия.
>> No.49878 Ответ
>>49877
> Это быдлокод
Но ведь это ровно тот код, который ты предложил мне написать. Я, очевидно, чего-то не понимаю, поэтому напиши, пожалуйста, как оно тут должно быть.
> ты еще и не понимаешь, что такое LSP.
Забавные проекции. Твой код, очевидно, никаких LSP не нарушает, потому что принцип этот про типы. Про подстановку в валидный код валидных экземпляров типов. Принцип этот требует, чтобы код, который работает для некоего типа, работал бы точно так же для любых его наследников. То есть, ты можешь добавлять методы детишкам, но не изменять обозреваемое поведение наследуемых методов (да, да, когда ты делаешь наследника, который делает всё то же самое, но только ещё и в логи пишет - это тоже нарушение LSP, потому что поведение программы меняется).
А вот когда у тебя есть код napechatat( 2 + 2 ), а ты меняешь его на napechatat( 3 + 2 ), то никаким LSP тут не пахнет, потому что здесь нет никакой замены типов. Ты можешь этот код поменять на napechatat( 2.0 + 2 ), нарушив LSP , потому что он теперь напечатает не 4, а что-то вроде 4.00000000 (хотя тут всё немного сложнее), что скажет тебе, что float не может быть субтипом int
>> No.49898 Ответ
>>49842
Кризис среднего возраста и тех и у других. Все программисты через это проходят.
>> No.49899 Ответ
>>49898
Почти все


No.43511 Ответ [Открыть тред]
Файл: 599716131.png
Png, 77.78 KB, 317×372 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
599716131.png
Предыдущий тред: >>39226
418 posts are omitted, из них 37 с файлами. Развернуть тред.
>> No.49531 Ответ
>>49523
> девопс
Админу кодинг на языке программирования в обязанности не вменяется. И куча остальных вещей, которые на него взгрузили, особо ценник не повысив, тоже.
> как делать бэкапы ... и чтоб сразу заработало
tar +- chroot, шеллскрипты. На вкус.
"чтоб сразу заработало" смахивает на фразу про Большую Кнопку из /s/ другой, мёртвой борды. Ясно ведь, в каком контексте её используют?
> с потенциально другим железом
bash, distro~bootstrap. Обычно такой задачи не стоит. Я не видел людей, массово выкидывавших x86 и переходящих на какой-нибудь ARM. Подозреваю, что подавляющая масса докерообразов в основном собираются под amd64 даже если это не так, конечного набора архитектур, как в дистрибутиве, нет, не было и не будет и поэтому под тезис о "потенциально другом железе" тут работает в пользу того, что и должно заниматься менеджментом пакетов — полноценных дистрибутивов с полноценными ПМ.
> в один клик
Оговорочка по Фрейду. Вы таки дома на какой системе живёте?
> Надо, чтоб без настройки, чтобы уже было настроено. Там могут быть конфиги нгинха и прочего на километры
Энджой ёр дыры в безопасности. За вас настраивать кто-то другой не будет. А если и будет, то сделает это из рук вон плохо.
> И конфиги. И расположения этих конфигов. И какие-то поднятые свои программы.
Это уже в архив или в строчку git clone $project; cd $project; make; make install в одном маленьком скрипте никак не помещается?
Если у вас с бойлерплейтом проблемы, можно использовать функции, например
>>49523
> девопс
Админу кодинг на языке программирования в обязанности не вменяется. И куча остальных вещей, которые на него взгрузили, особо ценник не повысив, тоже.
> как делать бэкапы ... и чтоб сразу заработало
tar +- chroot, шеллскрипты. На вкус.
"чтоб сразу заработало" смахивает на фразу про Большую Кнопку из /s/ другой, мёртвой борды. Ясно ведь, в каком контексте её используют?
> с потенциально другим железом
bash, distro~bootstrap. Обычно такой задачи не стоит. Я не видел людей, массово выкидывавших x86 и переходящих на какой-нибудь ARM. Подозреваю, что подавляющая масса докерообразов в основном собираются под amd64 даже если это не так, конечного набора архитектур, как в дистрибутиве, нет, не было и не будет и поэтому под тезис о "потенциально другом железе" тут работает в пользу того, что и должно заниматься менеджментом пакетов — полноценных дистрибутивов с полноценными ПМ.
> в один клик
Оговорочка по Фрейду. Вы таки дома на какой системе живёте?
> Надо, чтоб без настройки, чтобы уже было настроено. Там могут быть конфиги нгинха и прочего на километры
Энджой ёр дыры в безопасности. За вас настраивать кто-то другой не будет. А если и будет, то сделает это из рук вон плохо.
> И конфиги. И расположения этих конфигов. И какие-то поднятые свои программы.
Это уже в архив или в строчку git clone $project; cd $project; make; make install в одном маленьком скрипте никак не помещается?
Если у вас с бойлерплейтом проблемы, можно использовать функции, например
installfromgit () { git clone $1 $2; pushd $2; if [ -z "$3" ]; then make; make install; else sh -c "$3"; fi; popd};
installfromgit git://githost.example/killer-project.git killer-project "X=Y sh install.sh"
...
> На пакетном менеджере сложно поставить разные инстансы субд с разными настройками и разных версий под разные проекты, чтобы они не пересекались.
Ещё раз, как я говорил, если у вас в архитектуре по десять БД, очередей и всего остального, то эта изумительной красоты архитектура — помойка. Что самое интересное, с самого начала мою истерику по поводу сотен БД вы назвали небывальщиной, или я что-то путаю?
На Nix/Guix можно. В разные префиксы совать можно. В чруты разные, если уж стрелять из пушки по воробьям, можно. Вы же тянете весь комбайн.
> Да не
А вы дайте пруфы своего "Да не". Четыре буквы и скрипт снизу vs сборка чрут-образа, секс с неймспейсами, оверлейной ФС, костылями для того, чтобы вытащить ресурсы наружу и загадить таблицу того же фаервола плюс непрозрачный контейнер, который обязан состоять ровно из одного процесса.
> А мне по знакомствам надо было?
А вот это хз. Я не специалист по рынку. Но вакансии "всё в одном" должны наводить на мысли. Всё в традициях одного укросайтика на итальянском домене.

Что-то мы по третьему кругу всё идём.
Сообщение слишком длинное. Полная версия.
>> No.49532 Ответ
>>49531
Там после popd в функции семиколон не стоит, забыли.
>> No.49533 Ответ
>>49531
> шеллскрипты
Ну это уже почти то же самое. Но они типа должны быть удобнее.
> Я не видел людей, массово выкидывавших x86 и переходящих на какой-нибудь ARM.
Не настолько другим. Я не так выразился. Просто я к тому, что на другой материнке уже операционка может не загрузится, и её надо заново ставить.
> Оговорочка по Фрейду. Вы таки дома на какой системе живёте?
Дома на винде, на работе работаю на Линухе(дома я не работаю)
> Энджой ёр дыры в безопасности.
Ну обновлять это уже отдельно. Но вот надо просто поднять. А обновить чуть потом. Обновить всё равно легче, заново не настраивая.
> Ещё раз, как я говорил, если у вас в архитектуре по десять БД
Ну так я разрабатываю на одной машине несколько не связанных проектов. У них у каждого вся архитектура совершенно иная.
>> No.49686 Ответ
Файл: qt.png
Png, 32.51 KB, 1200×880 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
qt.png
Там это, Qt скурвился.
https://valdyas.org/fading/software/about-qt-offering-changes-2020/
https://www.qt.io/blog/qt-offering-changes-2020
Речь идет о неприятных изменениях в условиях лицензии и распространения. Сам до конца не въехал пока, поэтому не буду пытаться пересказать своими словами.
>> No.49848 Ответ
Здравствуйте. Вопросы больше про Си, но тем не менее:
1) NULL это всегда и везде 0х0000? Или зависит от либ/архитектуры?
2) Сейчаc читаю LDD для протухших ядер, и там везде после kmalloc() мемсетится нулями весь выделенный ломоть памяти. Зачем?
>> No.49849 Ответ
>>49848
> NULL это всегда и везде 0х0000?
Нет. Хотя реальных архитектур ты можешь и не встретить. http://c-faq.com/null/varieties.html
> Сейчаc читаю LDD для протухших ядер, и там везде после kmalloc() мемсетится нулями весь выделенный ломоть памяти. Зачем?
Видимо чтобы нельзя было прочитать какие-то ценные данные, которые там были до этого.
>> No.49850 Ответ
>>49686
Какие-нибудь KDE просто форкнут и начнут паралельно пилить, не проблема.
>> No.49894 Ответ
>>49686
Вроде бы никто не мешает использовать старые версии, напрмер 4, для десктопа там есть все, что необходимо, и чуточку больше.
>> No.49895 Ответ
>>49850
Лицензия исключает любые форки, но есть отдельный договор с Free Software Foundation о том, что Qt никогда не станет закрытым и только платным. Конечно, Qt может перейти полностью на GPL и коммерческую лицензию со следующей версии.
>> No.49896 Ответ
>>49894
Если ты не знаешь откуда скачать старые версии https://download.qt.io/archive/qt/


No.49322 Ответ [Открыть тред]
Файл: tenor.gif
Gif, 428.29 KB, 320×240 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tenor.gif
Захотелось попробовать чего-нибудь этакого и написать мелодию, используя исключительно текст. Еще до изобретения этих ваших трекеров программисты каждую нотку прописывали в коде программы. Вот что анон может посоветовать погуглить носкиллу по данному вопросу? Музыку писать-то я умею, а вот программировать нет. Есть ли что-то простое и легкоусвояемое?
17 posts are omitted, из них 3 с файлами. Развернуть тред.
>> No.49350 Ответ
>>49349
> Какого рода преимущество ты хочешь получить от написания мелодий именно в виде текста?
Я уже выше написал, зачем мне это нужно. Нет у меня пространства, приходится ныкаться по углам со старым ноутом, есть возможность только печатать. Про трекеры я уже выше сказал. С нормальным интерфейсом я так и не обнаружил. А ДАВы вообще для написания музыки не предназначены, они нужны для сведения и мастеринга, а не для написания мелодий. Эти миди-паттерны в давах не дают никакого представления об устройстве мелодии.
>> No.49351 Ответ
Файл: Po-ulize-hodila-krokodile.jpg
Jpg, 54.07 KB, 600×491 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Po-ulize-hodila-krokodile.jpg
>>49350
> Эти миди-паттерны в давах не дают никакого представления об устройстве мелодии.
Пифагор его рассчитал, представление твоё, я же ж бросал картинки выше...
>> No.49352 Ответ
Файл: frescobaldi-lilypond-editor.png
Png, 266.82 KB, 1920×1080 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
frescobaldi-lilypond-editor.png
>>49350
Т.е. тебе нужен нотный редактор, где эти ноты можно вводить текстом? Попробуй http://lilypond.org/text-input.html http://lilypond.org/easier-editing.html
>> No.49353 Ответ
>>49352
Это тоже прикольно, спасибо.
>>49351
Причем тут вообще пифагор и современные давы?

Ладно, забейте на тему, что я хотел узнать - узнал, спасибо.
>> No.49361 Ответ
>> No.49367 Ответ
>>49322
твой стэк: Assembly, MIDI, VST
>> No.49659 Ответ
мне Sibelius норм заходил, но в сети его сложно найти.
>> No.49888 Ответ
>>49322
Просто оставлю это здесь https://sonic-pi.net/
>> No.49892 Ответ
>>49888
А вот это уже не так просто, но тоже оставлю https://supercollider.github.io/
>> No.49893 Ответ
>>49892
Вот кстати да, словосочетание "язык программирования музыки" у меня в первую очередь вызывает ассоциации с чем-то вроде https://chuck.cs.princeton.edu/

Ну или с трекерами, но это уже уровень ассемблера для программирования музыки.


No.49861 Ответ [Открыть тред]
Файл: 16025644159910.jpg
Jpg, 64.16 KB, 604×604
Ваши настройки цензуры запрещают этот файл.
unrated
Дали входное задание, понять и написать программу для аутентификации на сервер с использованием ролей на Java Spring.

Я понял, что нужно создать бд с таблицами пользователей, ролей и объединяющую, прописать классы, которые будут считывать и добавлять туда новых, страницы отображения и доступы для разных ролей, а дальше что? В обычной idea готовые проекты (скачивал, чтобы понять) не запускаются, в скриншотах и видео видел, что это происходит через tomcat, встроенный в ультимативную версию, для чего он нужен?

Подскажите, пожалуйста по структуре программы: что нужно ещё добавить? И как запустить готовый проект?
>> No.49863 Ответ
>>49861
Проекты, скорее всего, имеют в корневой директории файл pom.xml. Для сборки таких проектов используется утилита maven. Создаёшь jar-файл через mvn install, потом этот jar-ник закидываешь в томкатовскую директорию webapps. Томкат можешь скачать и запустить отдельно.
>> No.49864 Ответ
>>49863
mvn install - это встроенная в ide утилита? То есть нужно просто запустить tomcat сервер, как это делается при, например, администировании бд?
>> No.49865 Ответ
>>49864
> mvn install - это встроенная в ide утилита?
Нет, это команда мавена, мавен - это самостоятельная программа, она может работать и без ide, хотя разные ide могут создавать свои интерфейсы для работы с мавеном.
> То есть нужно просто запустить tomcat сервер, как это делается при, например, администировании бд?
Да, просто запустить сервер и залить своё приложение на сервер. Не понял при чём здесь администрирование бд. Ты запускаешь томкат чтобы администрировать бд? Запости скриншоты.
>> No.49866 Ответ
>>49865
> Ты запускаешь томкат чтобы администрировать бд?
Приводил как аналогию работы сервера томкэт, и сервера для бд.
>> No.49869 Ответ
Ему сегодня исполнялось тридцать лет! Да, 30 полновесных лет в дерьме и позоре. И никто не поздравил. Хотя с чем поздравлять? С ним даже разговаривать-то старались только по необходимости. Этот факт породил в голове java-кодера ворох неприятных мыслей. Он просрал свою жизнь… Просрал настолько обидным способом, насколько это вообще возможно. Размышляя таким образом, он дошел до компьютера и, не снимая уличной одежды, плюхнулся на подобранный им на помойке засаленный офисный стул, не имеющий одного подлокотника, но еще вполне рабочий. Привычным движением джавист ткнул в кнопку включения питания и быстрее запустил IDEA. Он бы держал компьютер включенным круглые сутки, но электричество приходилось экономить. Добавил в pom хибернейт, сделал maven install, прошло несколько минут, в течение которых он возбужденно ёрзал по стулу.

Наконец-то! Он добавил аннотации ломбока на все энтити. Заебца! Почти как Котлин! Отчего-то ему вдруг захотелось поделиться своими мыслями с /s/осачерами. Выбрав создание нового треда, он начал строчить: «Ребята! Мне тридцать лет. Я помню, как десять лет назад так же, как и сейчас, петушил круды и рефакторил тырпрайзные проекты. У меня не было ни гостей, ни подарков. У меня и сегодня нет ни гостей, ни подарков. Мне было двадцать лет тогда, я был тощим и патлатым. Сегодня я жирный и лысею. Пожалейте меня. Мне плохо.» Яростно стуча по клавишам, он не заметил, как в комнату тихо вошла мать.

-Сынок… что ж ты не разделся-то.

Ему сегодня исполнялось тридцать лет! Да, 30 полновесных лет в дерьме и позоре. И никто не поздравил. Хотя с чем поздравлять? С ним даже разговаривать-то старались только по необходимости. Этот факт породил в голове java-кодера ворох неприятных мыслей. Он просрал свою жизнь… Просрал настолько обидным способом, насколько это вообще возможно. Размышляя таким образом, он дошел до компьютера и, не снимая уличной одежды, плюхнулся на подобранный им на помойке засаленный офисный стул, не имеющий одного подлокотника, но еще вполне рабочий. Привычным движением джавист ткнул в кнопку включения питания и быстрее запустил IDEA. Он бы держал компьютер включенным круглые сутки, но электричество приходилось экономить. Добавил в pom хибернейт, сделал maven install, прошло несколько минут, в течение которых он возбужденно ёрзал по стулу.

Наконец-то! Он добавил аннотации ломбока на все энтити. Заебца! Почти как Котлин! Отчего-то ему вдруг захотелось поделиться своими мыслями с /s/осачерами. Выбрав создание нового треда, он начал строчить: «Ребята! Мне тридцать лет. Я помню, как десять лет назад так же, как и сейчас, петушил круды и рефакторил тырпрайзные проекты. У меня не было ни гостей, ни подарков. У меня и сегодня нет ни гостей, ни подарков. Мне было двадцать лет тогда, я был тощим и патлатым. Сегодня я жирный и лысею. Пожалейте меня. Мне плохо.» Яростно стуча по клавишам, он не заметил, как в комнату тихо вошла мать.

-Сынок… что ж ты не разделся-то.

Он окинул ее беглым взглядом и хотел было уже привычно ответить матом, но что-то его остановило. Седые волосы матери, ее молящий взгляд, морщинистое лицо…

-Алешенька… сегодня ж день рожденья у тебя, сыночек… извини, я не смогла купить тебе ничего. Пенсии совсем не хватает. Извини меня…

Тут мама не сдержалась и глухо зарыдала. Алексей хотел было ее утешить, но что он мог сказать? Мама, прости меня за загубленную жизнь? Мама, прости меня за то, что я занимался крудошлепством безвылазно десять лет подряд? Сначала он считал себя джавистом джуниором… прошел год. Потом два. Три. Он втянулся. Спринг бут стал его жизнью.

- Да ладно, мам… ничего. Мне ж не надо все равно ничего.

Он произнес эти слова нарочито грубым тоном. Алексей вообще много раз задумывался, что с ним будет, когда мать умрет. Ведь она уже была такой старой и дряхлой… В последнее время она уже почти не выходила из дома. Кое-как спровадив плачущую маму из комнаты, он с тяжелым сердцем вернулся к компьютеру. Чтение накопившихся ответов его не порадовало. Среди потоков мата и насмешек нашлось кое-что необычное - некий ослослов успел за это время накатать крохотный рассказик под названием «Смерть Джависта», где в красках описывал его будущее через десять лет. Язык в рассказе был, наверно, еще кривее, чем в школьных сочинениях, но суть была ухвачена верно. Разволновавшись, он принялся было печатать ответ, как внезапно почувствовал: пальцы его не слушаются. Это ощущение напомнило ему о том, как в вузе он подрабатывал грузчиком, после чего не мог даже поднести ко рту ложку. Но ведь сегодня он ничего не грузил! Почему же тогда руки холодны и безжизненны? И почему так болит сердце… Больше, чем обычно… Он попытался встать. Невероятным волевым усилием ему это удалось, хотя при этом грудь защемило волной жуткой боли. Сдерживая крик, Алёша потянулся к грязному стакану со вчерашней водой. Поводя из стороны в сторону дрожащей головой, он попытался вспомнить, где лежит аптечка. По лбу струился ледяной пот. Разгребая руками, почти мертвыми ниже локтя, гору хлама на полу, он таки нашел ее.

«Это инфаркт… нужен валидол!» — пронеслось в его голове. Кое-как рванув молнию в сторону лихорадочно начал рыться в горе просроченных годы назад лекарств. Внезапно все его тело прорезал такой разряд боли, что он не сдержался и заорал во весь голос. В коридоре раздалось шарканье материнских тапок, и через несколько секунд она уже стояла на пороге.

- Сынок! Что с тобой?! — от шока ее голос словно помолодел.
- У…мираю.. — кое-как выдохнул леденеющими губами.

Зрение начало меркнуть. Последнее, что пронеслось в его голове, было: «mvn deploy» Через три недели милиция, вскрыв по жалобам соседей провонявшую квартиру, нашла в ней два чудовищно раздувшихся, уже полностью разложившихся трупа. F.

паста с пораши
Сообщение слишком длинное. Полная версия.


No.49834 Ответ [Открыть тред]
Ура! Сегодня День Программиста! Все же мы чуть такие? :)

https://youtu.be/2QkTuQPY0jY
>> No.49851 Ответ
Файл: 12726202097097.gif
Gif, 3.22 KB, 240×240 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
12726202097097.gif
Божечки кошечки. А тут программисты бывают вообще? Или так, только интересующиеся?
>> No.49852 Ответ
typingstudy.com - интересно,насколько трудно будет напечатать без опечаток все 15 уроков подряд?
>> No.49853 Ответ
>>49851
Бывают. Я же тут иногда.

>>49852
Трудно. конкретно этот не пробовал, но в соло на клавиатуре месяц пальцы ломал. Зато теперь на английском печатаю вслепую без проблем. Надо бы за русский еще засесть.
>> No.49854 Ответ
>>49853
> Бывают
Классно тогда. Но я, как истинный слоупок, сначала написал и только потом понял что вопрос был бессмысленен.


No.33881 Ответ [Открыть тред]
Файл: vim-shortcuts-dar...
Png, 116.56 KB, 2560×1600
edit Find source with google Find source with iqdb
vim-shortcuts-dark_2560x1600.png
Файл: vim_cheat_sheet_f...
Png, 1791.61 KB, 3301×2550
edit Find source with google Find source with iqdb
vim_cheat_sheet_for_programmers_print.png

Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

Ну а теперь собсна о vim и о том, что он из себя представляет. Если кратко, то это текстовый редактор, оптимизированный под слепую печать. Т.е. в нём можно делать всё не снимая рук с клавиатуры. Ну а ещё он мощный, расширяемый, бла-бла-бла.

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.
Обещал про Vim написать. Ну вот собсна и написал.

Итак. Для начала поговорим о том, кому он не нужен. Ненужен он в самую первую очередь тем, кто не умеет в слепую десятипальцевую печать. Для таких людей vim буде каторгой. Посему данной категории людей советую либо забить на это дело, либо начать развивать слепую печать. Благо навык полезный. Можно гуглить например очевидную stamina и т.д. Вторая категория людей, которым не нужен сабж, это фанаты emacs по очевидным причинам. Кроме того не очень желательно изучать для виндопользователей. Ибо может быть черевато переходом на linux в конечном итоге, лол.

Ну а теперь собсна о vim и о том, что он из себя представляет. Если кратко, то это текстовый редактор, оптимизированный под слепую печать. Т.е. в нём можно делать всё не снимая рук с клавиатуры. Ну а ещё он мощный, расширяемый, бла-бла-бла.

Ок. Где взять? Для линупсов достаточно установить из пакетного менеджера очевидный пакет под именем vim sudo apt-install vim для бубунты, а остальные и сами разберутся. Для винды можно пользовать ссылочку ftp://ftp.vim.org/pub/vim/pc/gvim74.exe

Скачали, запустили. Ну и? Где вся няшнота то?
Объясняю только самые основы:
  • выход без сохранения точнее закрытие файла при помощи :q!
  • есть несколько режимов работы. Основные: "нормальный", редактирование, командный, выделение.
  • передвижение по файлу при помощи клавиш h j k l это соответственно влево, вниз, вверх, вправо.
  • для собсна редактирования можно нажать например i
Далее находим vimtutor и проходим его. Он ответит на остальные вопросы. Для линупсов vimtutor ru в консольке. Для винды должно быть гхдетоу в районе меню пуск. Хотя шут его знает. Потом изучаем и печатаем на бумажку или ставим в качестве обойки воон те картинки, что в комплекте с постом идут.

Это было сверхкраткое введение. А теперь мы будем обмазыватся плугинками и всячески допиливать редактор до удобоваримого состояния. Для начала открываем .vimrc или _vimrc (для венды). Это конфигурационный файлег. Да, да, господа виндузятники. Ни каких окошечек с настроечками. Только хардкор.
По поводу настроечек рекомендую загуглить самомуа лучше почитать маны. Примеры: http://dimio.org/cgi-bin/bps/hlghtsrc/sourcehl.cgi?d=conf&s=vimrc&l=vim http://pastebin.com/jy4a3pE5 http://pastebin.com/paPWQ5fE http://pastebin.com/V3GdD38s Тысячи их.

Однако мы переходим к самому интересному. Доведём до ума сабж при помощи плугинок. Ибо без них vim уныл. Для начала нужно установить пакетный менеджер. Рекомендую либо Vundle либо NeoBundle. Думаю сами сможете загуглить их. К ним идут инструкции. Тож сами читнёте.

Самые полезниньки плагины можно найти там http://vim.wikia.com/wiki/Use_Vim_like_an_IDE

Отдельно упомяну следующие:
NERDTree добавляет древо файлов.
bufexplorer даёт удобную навигацию по буферам.
Вот кстати о буферах, окнах и табах в виме. Вот открыли вы один файлег, а потом, не закрывая первый, открыли второй. Можно потом переключаться между этими файлами. А можно их в одном окне одновременно открыть. Подробнее об том читнуть в справке или например в http://habrahabr.ru/post/28572/ http://habrahabr.ru/post/102373/
Vim Powerline раскрашивает статусную строку.
ColorSamplerPack набор тем оформления.

Вообще лучше самому подбирать плугинки. Их дофига, но не каждому все из них нужны. Да и изучать каждую плугинку тож время отнимает.

Можно ещё читнуть напоследок http://habrahabr.ru/post/176187/

Ну пока всё. Спрашивайте свои ответы. Ато может я чего забыл ненароком.
Сообщение слишком длинное. Полная версия. 246 posts are omitted, из них 43 с файлами. Развернуть тред.
>> No.49821 Ответ
Сегодня девочка узнала об include jump и что ctags, оказывается, более удобный, чем кажется.
>> No.49822 Ответ
Файл: 2017-07-08-913354...
Jpg, 308.67 KB, 881×1277
edit Find source with google Find source with iqdb
2017-07-08-913354.jpg
Файл: ADM-3A.jpg
Jpg, 443.13 KB, 2676×2370
edit Find source with google Find source with iqdb
ADM-3A.jpg

Интересно ещё вспомнить, что vi писался конкретно под терминал ADM-3A (https://ru.wikipedia.org/wiki/ADM-3), в котором сэкономили на дополнительных клавишах и микропроцессоре, почему он и получил название «тупого терминала». Так что он автором таким сделан, чтобы работать на этом и подобных дрынах, а вовсе не ради какой-то там эргономики. Этому анахронизму уже более 40-ка лет.
>> No.49823 Ответ
>>49822
> а вовсе не ради какой-то там эргономики
Ну почему же. Ради эргономики работы именно на этом конкретном и подобных терминалах. А типичная современная клавиатура недалеко ушла от этих терминалов. (Esc только перебиндить надо.)

Я всегда говорил, что в споре emacs .vs. vi за эргономику, vi выигрывает при условии использования стандартной ублюдочной клавиатуры, а если взять нормальный kinesis или ergodox, то все эти пляски с режимами становятся не нужны, а emacs с его аккордами становится вполне удобен.
>> No.49824 Ответ
Файл: 2018-01-04-943532.png
Png, 139.38 KB, 654×826 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
2018-01-04-943532.png
>>49823
Это не удобство, это компромисс между удобством и железом.

http://www.classiccmp.org/dunfield/altair/d/adm3a.pdf — почитай, довольно интересно в плане понимания, что, зачем и почему.
Этот, как и другие, терминал подключался к универскому мэйнфрейму через модем на скорости 300 бод, т.е. даже экран vi на нём перерисовывался оче неторопливо с другой стороны, люди только-только начали пересаживаться с телетайпов, так что полноэкранный режим для них был чем-то нереально охуенным. Все коды, которые он посылал, были ASCII кодами и реализованны аппаратно кучей микрух TTL-логики, т.е. Ctrl+A отсылает ASCII SOH, а не скан-коды клавиш, к которым ты привык; приём ASCII BEL или прожимание Ctrl+G заставляет термил бибикать, и хер что ты с этим сделаешь (там под крышечкой с винтиком, на которой написано ADM, есть переключатель, чтобы он не бибикал). Вся его ёба-графика, т.е. перемещение курсора по экрану, была реализована аппаратно в самом терминале, т.е. ESC = ## ## ставит курсор в позицию ## ##, ты не можешь изменить это поведение программно. По соображениям простоты аппаратной реализации разработчики терминала повесили стрелки на клавиши HJKL (Ctrl+HJKL), хотя удобней IJKL. Клавиша Here Is отсылала уникальный идентификатор терминала и досталась в наследство от телетайпов, так же, как и Line Feed, которая прокручивала барабан с бумагой на один шаг вверх, а посему она тупо дублирует Ctrl+J.
>>49823
Это не удобство, это компромисс между удобством и железом.

http://www.classiccmp.org/dunfield/altair/d/adm3a.pdf — почитай, довольно интересно в плане понимания, что, зачем и почему.
Этот, как и другие, терминал подключался к универскому мэйнфрейму через модем на скорости 300 бод, т.е. даже экран vi на нём перерисовывался оче неторопливо с другой стороны, люди только-только начали пересаживаться с телетайпов, так что полноэкранный режим для них был чем-то нереально охуенным. Все коды, которые он посылал, были ASCII кодами и реализованны аппаратно кучей микрух TTL-логики, т.е. Ctrl+A отсылает ASCII SOH, а не скан-коды клавиш, к которым ты привык; приём ASCII BEL или прожимание Ctrl+G заставляет термил бибикать, и хер что ты с этим сделаешь (там под крышечкой с винтиком, на которой написано ADM, есть переключатель, чтобы он не бибикал). Вся его ёба-графика, т.е. перемещение курсора по экрану, была реализована аппаратно в самом терминале, т.е. ESC = ## ## ставит курсор в позицию ## ##, ты не можешь изменить это поведение программно. По соображениям простоты аппаратной реализации разработчики терминала повесили стрелки на клавиши HJKL (Ctrl+HJKL), хотя удобней IJKL. Клавиша Here Is отсылала уникальный идентификатор терминала и досталась в наследство от телетайпов, так же, как и Line Feed, которая прокручивала барабан с бумагой на один шаг вверх, а посему она тупо дублирует Ctrl+J.
Т.е. в подобных терминалах никакой кастомизации быть не могло в принципе, здесь всё аппаратно сделано, сиречь «ешь что дают». Отсюда или vi-шные режимы, или emacs-овские аккорды, что влезет в память универского компа. В современных клавиатурах аппаратной осталась только клавиша System Request, которая досталась в наследство от мэйнфреймов.
Сообщение слишком длинное. Полная версия.
>> No.49825 Ответ
Файл: 649a345fdb3bf5951fd9ac1b64a0d3ef.png
Png, 970.01 KB, 1593×896 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
649a345fdb3bf5951fd9ac1b64a0d3ef.png
>>49824
Это все не так и важно, не так ли? Моды в vi появились в древние времена и задумывались под древнюю аппаратуру, но это не отменяет того, что сама идея пережила эти времена и сейчас используется именно из-за своей эргономичности: Spacemacs и vi-like плагины во всех популярных IDE будут тому подтверждением.
>> No.49826 Ответ
>>49825
Альтернативная теория:
Старпёры привыкли к ви(му). Старпёры были хорошими программистами. Новое поколение увидело, что хорошие программисты пишут в ви(ме), стали подражать и привыкли. Из нового поколения получились хорошие программисты. Ещё более новое поколение увидело, что хорошие программисты пишут в ви(ме), и стало подражать. Продолжать до 2020 года.
>> No.49827 Ответ
Файл: 2015-02-25-714031.png
Png, 174.62 KB, 350×651 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
2015-02-25-714031.png
>>49825
Какая идея? Идея vi — полноэкранный редактор, который работает на любом дрыне, имитирующем аппаратно пиш.машинку и подключаемом к компьютеру через тормознутый диалап. За это он был очень любим одминами, у которых в каморке всегда такой дрын имелся, стал стандартом и до сих пор суётся в дистрибутивы по принципу «А вдруг?!», благо менять в нём ничего уже не надо.
В современности же vim косплеит по факту edit.com с нескучными фичами, однако его кривой RE-движок не вывозит и заставляет юзать Perl.

Программисты как правило умеют и любят программировать, так что им, как и другим мастерам, не проблема сделать что-то, что им нужно. Многие кодят по фану головоломные вещи хотя другим советуют никогда не пробовать делать эти вещи.

А если смотреть ширее, то:
— скан-коды и куча дополнительных клавиш в клавиатурах, которые отсюда можно перебиндить под свои нужды — в ASCII-терминалах у вас нет возможности узнать, например, нажата ли клавиша Ctrl, поскольку она просто обнуляет 6-й бит в коде символа;
— чемпион по скоропечатанью выехал на том, что использовал CapsLock вместо Shift — так почему-то быстрее (собственно {Shift,A} прожимать удобнее, чем Shift+A, но у нас клавиатуры до сих пор косплеят пиш.машинку, где такое поведение было обусловлено механикой);
— аккорды всегда были в винде, пробиваются через Alt: {Alt,f,o}, {Alt,f,s}, {Alt,e,u} — ЖидБрейнс в своей Идее на это почему-то забил;
— аккорды были в AutoCAD, также они есть в QCAD (Компас — не знаю, не крутила) — я вообще не представляю, как можно что-то начертить без аккордов, особенно альбом простыней A1.

>>49825
Какая идея? Идея vi — полноэкранный редактор, который работает на любом дрыне, имитирующем аппаратно пиш.машинку и подключаемом к компьютеру через тормознутый диалап. За это он был очень любим одминами, у которых в каморке всегда такой дрын имелся, стал стандартом и до сих пор суётся в дистрибутивы по принципу «А вдруг?!», благо менять в нём ничего уже не надо.
В современности же vim косплеит по факту edit.com с нескучными фичами, однако его кривой RE-движок не вывозит и заставляет юзать Perl.

Программисты как правило умеют и любят программировать, так что им, как и другим мастерам, не проблема сделать что-то, что им нужно. Многие кодят по фану головоломные вещи хотя другим советуют никогда не пробовать делать эти вещи.

А если смотреть ширее, то:
— скан-коды и куча дополнительных клавиш в клавиатурах, которые отсюда можно перебиндить под свои нужды — в ASCII-терминалах у вас нет возможности узнать, например, нажата ли клавиша Ctrl, поскольку она просто обнуляет 6-й бит в коде символа;
— чемпион по скоропечатанью выехал на том, что использовал CapsLock вместо Shift — так почему-то быстрее (собственно {Shift,A} прожимать удобнее, чем Shift+A, но у нас клавиатуры до сих пор косплеят пиш.машинку, где такое поведение было обусловлено механикой);
— аккорды всегда были в винде, пробиваются через Alt: {Alt,f,o}, {Alt,f,s}, {Alt,e,u} — ЖидБрейнс в своей Идее на это почему-то забил;
— аккорды были в AutoCAD, также они есть в QCAD (Компас — не знаю, не крутила) — я вообще не представляю, как можно что-то начертить без аккордов, особенно альбом простыней A1.

Так что удвою вот этих: >>49818 >>49823

>>49826
Забавно в свете вашей теории вспомнить тот факт, что vi со второй версии перестал помещаться в память универского компа.
Сообщение слишком длинное. Полная версия.
>> No.49831 Ответ
>>49827
Ты немножко терминологию путаешь. "Аккорды" -- это как раз одновременные нажатия, типа Ctrl+Alt+Del. Последовательные нажатия (вроде виндовых {Alt,f,o}) как-то по-другому называются. И ближе к виайным режимам по принципам работы.

А стандартная клавиатура, конечно, то ещё дерьмо. Инженерный идиотизм, как я его называю. По-хорошему, ещё при появлении электрических пишущих машинок (когда механических рычагов под клавишами не стало) нужно было всю раскладку переработать с точки зрения эргономики.
>> No.49832 Ответ
>>49824
> Это не удобство, это компромисс между удобством и железом.
Любое удобство работы на компе это компромисс с железом. По крайней мере, пока нейроинтерфейс не разработали.
>> No.49838 Ответ
>>49824
> хотя удобней IJKL
Вкусовщина. Начинал пользоваться вимом из-за хайпа, без навыка слепой печати. Потом один чувак сказал, что я косячу. Научился (почти)слепой печати (косячные биндинги мышечной памяти и иногда приходиться мысленно представлять клавиатуру и места кнокок).

Так вот, теперь субъективно один ряд управляющих кнопок вместо WASD-подобного кажеться лучше. Хз. Я больше думал не про "HJKL", а про "JKL;" - чтобы с соска руку не нужно было убирать.


[0] [1] [2] [3] [4] [5] ... [52] [53] [54]
Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]