• Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    0

    Ужас.

  • Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    0

    Думалку отключать вредно. Функция легко могла называться iswspace. Там есть намного более страшные имена и ничего.

  • Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    0

    Об этом и говорю. Чтобы видеть ошибку (не важно, кто в ней виноват), надо забыть или не знать стандартную библиотеку С, в которой сэкономили на слове white внутри isspace.

  • Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    +1

    Я не заметил бы ошибку, если бы функция назвалась iswhitespace. Но она называется так, как называется. ((c)==' ' || (c) == '\t') — примерно так я и представлял себе её реализацию. Авторы MC тоже.

  • Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    –3

    В условии содержится логическая ошибка. На примере "пробела" она очевидна. Код уже неправильный, и рассматривать его поведение дальше на других наборах данных просто нет смысла. Сначала надо исправить.

  • Россияне на 20% чаще сталкиваются с оскорблениями в Интернете
    0

    Не знаю, хорошо это или плохо, я ещё так периодически делаю не для поругаться, а наоборот: когда на форуме появляется вопрос по теме, с которой я могу помочь.


    Бывает, начинаешь писать ответ/решение и понимаешь, что проблема описана настолько коряво или наивно (автор мыслит на какой-то на своей волне или просто новичок), что на выяснение важных деталей потратишь в разы больше времени, чем на описание решения. И скорее всего, тебя с первого раза не поймут, со второго тоже, и даже когда поймут, всё равно сделают неправильно. Ну так и зачем мучать себя и других.

  • Для тех, кто хочет поиграть в детектива: найди ошибку в функции из Midnight Commander
    –4

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


    Взгляд споткнулся как раз о isspace(c) && ('\n' != c). Про isspace прочитать ещё не успел, исходил из названия и персонального здравого смысла. Если символ пробельный (собственно пробел или, в крайнем случае, табуляция), то он не может быть одновременно переводом строки. Соответственно, объединение по И выглядит подозрительно. Я предположил, что, возможно, имелось в виду ИЛИ; а даже если нет, то тут в любом случае какая-то фигня.

  • Россияне на 20% чаще сталкиваются с оскорблениями в Интернете
    +2

    Неоднократно так делал.

  • Microsoft урезала функциональность WMP в Windows 7, оставив ее прежней в Windows 8 и 10
    0

    Новую ОС раздавали бесплатно, да и сейчас втихаря раздают. Кому надо, перешёл.

  • Microsoft урезала функциональность WMP в Windows 7, оставив ее прежней в Windows 8 и 10
    0

    WMP — плеер как плеер, работает, играет. У меня музыка лежит по папочкам-исполнителям-альбомам, он с ней замечательно справляется. Отказался от винампа, и что там ещё было, в пользу WMP незадолго до выхода Висты.


    Если видео вдруг тоже открылось в WMP, то можно в нём и посмотреть. Единственная претензия к нему как к видеопроигрывателю — пауза не по пробелу, а по комбинации, которую невозможно запомнить.

  • Дилетант в opensource — lessons learned за 3 года
    +1
    Да нет, вы знаете, просто не хочется делать и выкладывать бесполезные вещи. Писать в стол, так сказать, не хочется.

    Писать стоит в первую очередь для себя, для решения своих проблем. Это не бесполезная вещь и не в стол.


    А если вещь приносит кому-то пользу — например, экономит силы и время — то это экономия денег в конечном счёте. А стало быть появляется коммерция.

    Когда тебе платят за труд ― это коммерция. Когда ты свой труд раздаёшь ― это благотворительность.


    Вот пишешь что-нибудь себе, решаешь свою конкретную практическую проблему. Потом смотришь ― получилось вроде неплохо, проблему решает, паровоз зависимостей не тянет и к основному проекту гвоздями не прибито. Можно выложить в общий доступ. Зачем? Тебе не жалко, а кому ещё вдруг пригодится. На этом можно остановиться.


    [Глупая аналогия]Допустим, я не сантехник, но придумал способ легко отремонтировать протекающий сливной бачок. Могу рассказать об этом соседу и даже показать. Но и мысли не будет ходить рассказывать об этом всему дому.[/Глупая аналогия]

  • Основные проблемы разработки современных интерфейсов
    +4

    Он демонстрирует одну из основных проблем современных интерфейсов, когда берут старый интерфейс, добавляют пустого места побольше и запихивают в экран поменьше.


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

  • Дилетант в opensource — lessons learned за 3 года
    +1

    Не очень понял, зачем пиарить свой открытый проект. Звёздочки какие-то… Только если ради потенциальных денег, но тогда JetBrains правы, отказав в бесплатной лицензии.


    Если же не ради денег, то чем меньше у проекта пользователей, тем меньше глупых вопросов, меньше запросов фич, которые тебе лично нахрен не сдались, и меньше багов в трекере. Хотите тоже использовать ― берите и молча используйте. Хотите фичу ― напишите. Под Линуксом не работает? ― ну вот и почините. Автор не нанимался решать чужие проблемы.

  • Почему Windows XP в 2019 году по-прежнему рулит, или ЧЯДНТ?
    0

    Какие ж тут понты? Не i9-9999K, не 64 Гб, SSD скромный ― для ОС и рабочих программ, видеокарты вообще нет. Обычная современная рабочая машинка, чтобы делала своё дело и не заставляла страдать. Два монитора ― это не понты, а удобно; а 27" ― недорого.

  • Стоит ли сохранять длину массива в локальную переменную в C#
    0

    Проверил. Убрал тест Aggregate, добавил несколько с указателями из любопытства. На NET Core не проверял, оно у меня не установлено. Добавил Моно и x86.


    Результаты забавные


    Если коротко: нехрен микрооптимизировать наугад, без тестов на целевой платформе, даже если думаешь, что знаешь.


    1. LegacyJit x64 отдал предпочтение методу с array.Length, вынесенному из условия цикла (540 нс против 770 нс). Но проверка на выход индекса за пределы массива есть в обоих случаях. Нихрена она не убрана.
    2. В других конфигурациях NET Framework-компиляторам пофиг, скорость одинаковая. Хотя RyuJit догадался убрать проверку в обоих случаях (они вообще идентичные с точностью до замены регистров). Оставил её только в варианте ForReverse. Поэтому без необходимости ходить по массиву в обратную сторону наверное не надо, хотя разница невелика (600 нс против 640 нс).
    3. Компилятор Mono x64 тоже выбрал вариант с вынесением array.Length из цикла (860 нс против 1040 нс). Так же и в Mono x86 (1800 нс против 1960 нс). Осталась там проверка на выход за пределы или нет, непонятно. Дизассемблер непривычный и без отображения меток. Вообще ХЗ что там происходит.
    4. Замена статического массива на экземплярный дала изменение только в одном пункте: немного ускорился For на Mono x64, но на общую картину это не повлияло.
    5. Моно генерирует какие-то бессмысленные портянки машинных инструкций, перетасовывая регистры взад-вперёд. Дизассемблер методов с развёрнутыми циклами сам разворачивается на несколько экранов. В результате чем сильнее цикл развёрнут, тем больше кода и всё медленнее. При том что для LegacyJit x64 это тест даёт лучший результат из всех возможных.
    6. Лучше таки использовать foreach и для скорости, и для наглядности, и писать быстрее, и негде ошибиться.
    7. Вариант с указателями тоже неплох (почему-то из трёх похожих лучше всего именно PtrA). Когда очень надо, все средства хороши.
  • Годные туториалы на YouTube
    +2

    И я про то же.


    Текст ― это RAM: можно читать с любого момента, отвлекаться, слушать в фоне музыку, тут читать, тут не читать, тут рыбу заворачивали. Видео ― сел смотреть, сиди и смотри. Отвлёкся, пропустил фрагмент? А ты не отвлекайся, сиди и смотри. Сконцентрируйся.


    Сколько бы в тексте ни было картинок, в видео их всё равно больше.

  • Годные туториалы на YouTube
    +2

    При всех преимуществах текста, у видео тоже есть два:


    1. Наглядность. Не надо тыкаться в IDE как слепой котёнок.
    2. Некоторое принуждение к дисциплине. Куски текста велик соблазн пропускать или читать по диагонали. Начал читать абзац, подумал, что вода, бросил, перешёл к следующему. Видео принуждает слушать всё целиком. Перемотать конечно можно, но т.к. не видно начало следующего абзаца, то непонятно, насколько перематывать, поэтому сидишь слушаешь всё и не лезешь впереди паровоза.
  • Стоит ли сохранять длину массива в локальную переменную в C#
    0

    Запущу обязательно. Вечером.

  • Стоит ли сохранять длину массива в локальную переменную в C#
    +1

    https://blogs.msdn.microsoft.com/clrcodegeneration/2009/08/13/array-bounds-check-elimination-in-the-clr/


    Advice 2: When possible, use “a.Length” to bound a loop whose index variable is used to index into “a”.

    Как минимум раньше эта «оптимизация» приводила к обратному эффекту. Вместо явного (i < a.Length) JIT видел сравнение индекса с какой-то левой переменной и на всякий случай вставлял в код проверку на выход за границы массива.

  • Стоит ли сохранять длину массива в локальную переменную в C#
    0

    Спасибо. Сегодня я узнал, что вынесение array.Length из условия цикла в отдельную переменную больше не приводит к замедлению. Проверка выхода за пределы массива оптимизируется в обоих случаях. Видать, компиляторы поумнели. Хотя, надо ещё Моно проверить, там это важно.

  • Отладка бага, который не воспроизводится
    +8
    На данный момент мы не можем воспроизвести ошибку, поэтому лучшая стратегия:
    Откатить обратно одну из двух библиотек.Выкатить её для 10% пользователей, что тривиально делается в Play Store.Проверить у нескольких пользователей, сохранился ли сбой. Таким образом мы подтвердим или опровергнем гипотезу.

    Интересно, чем плоха была стратегия откатить бедных пользователей с проблемного билда на нормальный и разбираться со своими проблемами самостоятельно.

  • Визуальное программирование — почему это плохая идея
    +1
  • 5 лучших игр на ПК для изучения английского
    0

    Мне кажется, приведённый список совсем не для изучения английского, а для закрепления или поддержания неплохого уровня. Как бы вообще случайный.


    Для изучения я больше ожидал увидеть что-нибудь типа The Sims, в котором присутствует наверное вся базовая лексика. Она правда без аудио, но зато всё наглядно, интерактивно, употребляется в контексте и регулярно повторяется.

  • Как сделать в игре межрасовый роман и не рассмешить игрока до слез
    +2

    В латинском слова склоняются по падежам. В слове coliseum -um на конце ― это окончание какого-то там склонения именительного падежа единственного числа. В других падежах и числах окончания другие. В родительном наверно будет colisei, т.к. уже не -um. При переводе латинских названий на русский принято откидывать латинские окончания и вместо них использовать русские, потому что иметь в слове два окончания от двух языков как-то глупо. Особенно если одно от одного падежа, а другое от другого (например, «колизеумом»). В английском собственных окончаний почти нет, так что им пофиг.

  • До свидания, Electron. Здравствуйте, настольные PWA
    +1

    Старый процессор, который до сих пор нет смысла менять. Разве что захочется 8-12 ядер.
    Но VS Code да, шустрый. Sublime Text конечно быстрее, но всё равно неплохо.

  • Программист на всю голову: как кодинг влияет на мышление
    0

    На практике именно в таких клинических случаях обычно никто не понимает. На форумах большинство игнорит такие сообщения, некоторые заходят постебаться. Потому что если реально пытаться человеку помочь, его сообщение надо по несколько раз читать и перечитывать, строить догадки, что имелось ввиду, что пропущено, где факты, а где эмоции, что важно, что неважно, в чём рыбу заворачивали. Поток мыслей, без обработки вываленных в виде текста, выглядит как помойка. Мало кому интересно в ней копаться.


    Потому что от нее нет выгоды.

    Выгода прямая. Чём корректнее написал, тем быстрее и точнее тебя поймут.


    Когда пишешь в твитере, что ел сегодня на завтрак, то всем насрать, что там написано, и тебе насрать, все ли всё правильно поняли. Если же обращаешься к людям с проблемой или хочешь обсудить интересную тему, то ситуация обратная. Выгодно писать корректно, чтобы:
    1) тебя поняли с первой попытки, а не начали читать и бросили;
    2) в попытках донести таки мысли не приходилось по два-три раза переписывать одно и то же.

  • Программист на всю голову: как кодинг влияет на мышление
    0
    Просто загружайте мысли в мозг, и выгружайте мысли из мозга. Кодеры так и делают, ибо попробуйте закинуть код в гугл транслейт и проговорить его. Кодеры проговаривают код только во время сложного дебага который бывает раз в месяц.

    Я стараюсь писать код так, чтобы его можно было с листа прочитать по-русски или по-английски. Пусть грамматически это будет несколько коряво, но идея, смысл должны улавливаться. Вот как мысль формулируется на естественном языке, по возможности так её в коде и оформить. Если удаётся написать так, чтобы и читалось корректно, то это идеал.

  • Программист на всю голову: как кодинг влияет на мышление
    0
    Вы в устной речи можете отличить ться от тся? Я — нет, я случаю мысль, а не звуки. И пишу -мысль, а не буквы, и читаю мысль, а не буквы.

    В речи нет, а на вид ― да, как иероглиф, а не цепочку букв. Если написано неправильно, то как иероглиф, который не стыкуется с соседними иероглифами.


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

    В клинических случаях для стороннего наблюдателя это выглядит так: написано много, но бессвязно, с многоточиями, одним абзацем, без разделения на предложения, с запятыми в случайных местах (где в голове были задержки мысли, туда запятые и влепили). Читаешь, думаешь: ну блин, чувак, путь в твоей голове всё это выглядит красиво и логично, но головы же у всех разные. Я из написанного вообще не понимаю, что конкретно ты делаешь и в чём конкретно у тебя проблема. Максимум ― могу выразить сочувствие, если это как-то поможет.


    Язык же со всеми его формальностями нужен не просто так ― это инструмент для передачи мысли из одной головы в другую с минимальными потерями. Телепатию ещё не изобрели, а если изобретут, боюсь, мы все окажемся друг с другом мало совместимы.


    вы же не проговариваете то, что говорите

    Когда я говорю, и понимаю, что продолжение мысли/предложения плохо стыкуется с уже произнесённым началом, я переформулирую и переговариваю начало заново. Ну то есть, как и на письме, слежу, чтобы вылетевшее с языка оставалось стройной цепочкой слов, а не множеством.

  • Программист на всю голову: как кодинг влияет на мышление
    –1

    Я не против называть это явление тенденцией, но у этой тенденции было две альтернативы: либо предпочитать -ться вместо -тся, либо наоборот. У того, почему намного чаще встречается первый вариант, должно быть объяснение.


    Украина здесь абсолютно ни при чем, не надо ее приплетать, где ни попадя.

    Украина не при чём, украинский может быть при чём. Это моё предположение, для которого у меня логическое объяснение есть.


    В русском языке в какой бы форме рефлексивные глаголы не стояли, есть там мягкий знак или нет, в речи все согласные на конце получаются твёрдыми. Если уж ошибаться на письме, то логичнее было бы пропускать мягкий знак. Во всех языках в процессе их развития вроде так и происходит: сначала написание соответствует произношению; потом произношение меняется, люди начинают делать больше и больше ошибок, т.к. пишут что слышат; потом новый вариант написания закрепляется де-факто и де-юре.


    В украинском же, что в третьем лице, что в инфинитиве, согласные в окончаниях глаголов смягчаются (насколько я себе представляю украинский). Что делать? ― сумніватися. Что делает? — сумнiваэться. И как по этому принципу понять, нужен тут в русском мягкий знак или нет? Вроде нужен, вот и ставят его всегда и везде.


    Ещё я давно заметил, что в блогах разных украинских товарищей, которые типа русскоязычные, замечательно красиво грамотно и много пишут по-русски, ошибки обычно делятся на две категории: явные опечатки и -ться вместо -тся.


    «понимаеШ»

    А по-украински ровно так оно и правильно.


    «выигрышЬ»

    Лох какой-то писал. Правильно «выйгрышь».

  • Программист на всю голову: как кодинг влияет на мышление
    0

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


    Пишу конечно не словами, а буквами. На клавиатуре только буквы есть. На клавиатуру особо не смотрю, но всё равно пишу в разы медленнее, чем читаю, а поскольку времени всё равно завались, проговариваю текст про себя.


    Intellisense есть в IDE, в браузерах нет. Набирая быстро, я изредка могу написать -ться вместо -тся чисто механически. (Постоянно по механической привычке пишу windows вместо window, driver вместо drive, unity вместо unit или unite; потом приходится стирать лишнюю букву). Но сразу видится и слышится несоответствие написанного задуманному и ошибка ловится на лету.


    Очень часто разные формы глагола отличаются друг от друга не только лишним мягким знаком, но и ударением, например: относится/относиться, светится/светиться, находится/находиться… Ошибки в таких словах мне кажутся абсолютно дикими, я не понимаю, как тут можно ошибаться. Слова не только выглядят по-разному, они ещё и звучат по-разному.


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

  • БДСМ, Гор и преследование разработчика Drupal
    +12

    Это был риторический вопрос, описывающий проблему, которую стоит исправить.

  • Программист на всю голову: как кодинг влияет на мышление
    0

    Кодинг и насилие никак не связаны => помехой друг другу тоже быть не могут: http://mignews.com.ua/proisshestviya/ubijstva/2003934.html
    https://lenta.ru/news/2017/02/18/amdnvidia/
    https://www.linux.org.ru/forum/talks/2788939

  • Программист на всю голову: как кодинг влияет на мышление
    0

    Я сильно подозреваю, что проблемы с -ться в основном у товарищей с Украины. Вернее, с -ться у них проблем как раз нет, у них проблемы с -тся.

  • Программист на всю голову: как кодинг влияет на мышление
    0

    Это же очевидно. Сталинизм и кодинг никак не связаны => помехой друг другу быть не могут. Всё. А то развели тут дискуссию на 10 экранов.

  • Апгрейд матрицы ноутбука TN->IPS или как получить из бюджетного ноутбука более продвинутый
    0

    Менял как-то матрицу в нетбуке с сенсорным экраном. В него однажды прилетело, сенсорная панель осталась цела, а матрица за ней треснула. Всё оказалось проще, чем предполагал, кроме одного момента:


    Т.к. матрица не торчит наружу, а закрыта прозрачной сенсорной панелью, надо постараться всё сделать так, чтобы не заляпать их изнутри. Я об этом не подумал, и когда снял с матрицы защитную плёнку, понял, что у меня стекло грязное изнутри. Пока чистил отпечатки со стекла, матрица без плёнки покрылась пылинками. Пока чистил матрицу, стекло покрылось пылинками...


    Короче:
    1) не снимайте защитную плёнку с матрицы, пока не будете готовы сразу же закрыть её стеклом, если оно есть;
    2) пыль легче и быстрее всего удалять не тряпочкой, пусть даже безворсовой, а небольшой малярной кисточкой.

  • Программист на всю голову: как кодинг влияет на мышление
    +10
    Это — гибкий набор навыков, нацеленных на алгоритмическое решение задач, привычка комплексно использовать в повседневной жизни абстрагирование, декомпозицию, оценку, логическое мышление, точность и привычку замечать детали.

    — Дорогой, не хочешь вынести мусорное ведро?
    — Нет.
    — Дорогой, вынесешь мусорное ведро?
    — Ага.
    (через два часа)
    — Дорогой, вынеси мусорное ведро сейчас!

  • Змея в почтовом ящике и при чем тут F#
    0

    С перерисовкой UI трудно понять, сколько занимает расчёт самого тика: 10 мкс или 10 мс. Если микро, то нормально; если милли, то очень много. Я просто для себя пытаюсь понять, что ФП в общем и F# в частности представляют собой с точки зрения скорости. Т.е. что получится, если не пытаться специально оптимизировать, издеваясь над языком, а просто взять F# и писать на нём так, как принято в F#.

  • Разработка GLSL шейдеров на Kotlin
    0

    Полтора года назад чуваки из Unity во время ежегодной hack week приделали к движку поддержку шейдеров на C#: https://www.youtube.com/watch?v=hJZwaaXMfUA


    Больше тему нигде никак не светили, и вроде бы она заглохла. Но с другой стороны, они сейчас пилят новую математическую библиотеку на C#, заточенную на совместимость с привычным синтаксисом HLSL (swizzling присутствует). На замечания, эй, народ, у вас naming guidelines совершенно не шарповские ― отмахиваются; говорят, делаем так, как все привыкли писать в шейдерах. Подозреваю, что-то намечается. Конвертер IL2CPP они уже сделали, могут и IL2HLSL сделать.

  • Змея в почтовом ящике и при чем тут F#
    0

    200..500 мс ― это несколько диковато. Даже 1 мс ― это уйма времени, за которую можно сделать многое, если постараться (необязательно очень сильно). За 16 таких миллисекунд игры успевают нарисовать целый мир, обсчитать и физику, и звук, и ИИ и ещё время остаётся.


    Вопрос: если в финальной версии убрать искусственные задержки, с какой скоростью оно потенциально может работать? сколько времени обрабатывается один тик?

  • Зачем изучать непопулярные языки. Пример сообщества F#
    0

    Как ни странно, представление о Котлине и почему на него может хотеться перейти у меня есть. Примерно такое: Котлин — это то же, что и Ява, только с человеческим лицом; более лаконичное и с бóльшим количеством сахара. Соответственно, позволяет делать всё то же, что и Ява, работает с такой же скоростью, просто удобнее. Ещё более грубо — как если бы перейти с C# 1 на C# 7, а может даже 9.


    Причём, в отличие от NET, мир Явы от меня далёк. F# же работает в экосистеме NET, а для меня менее понятен. Не получается думать про про него как про переделанный с нуля и улучшенный вариант C# и что всё, что делается на C#, можно так же легко или даже легче делать на F#. Это ведь не так.


    В одной из попыток что-то наконец сделать на F#, пробовал переписать на него с C# кусок кода, который занимался какими-то математическими/геометрическими вычислениями. Исходные данные были в виде типа float/single и в виде структур-векторов и матриц на его основе, результат нужен был во single, всё API использовало single и почему-то это оказалось засадой. Не помню подробностей, давно было, то ли родного типа single в F# тогда не было, то ли вещественных литералов одинарной точности, то ли результаты операций постоянно норовили соскочить из single в double; помню, что постоянно требовалось что-то во что-то кастить и было жутко неудобно и длиннее, чем в исходном C#.


    Со скоростью работы непонятно: какие вещи на F# работают быстрее, чем на C#? насколько быстрее, в разы или слегка? какие работают медленнее? (уверен, что такие есть) насколько медленнее, в разы или слегка?


    Делал какие-то примитивные тесты для родных для F# коллекций и по времени работы получалось как-то не очень. Может быть, неправильно делал. А чтобы сделать правильно, надо сначала хорошо разобраться в языке. А чтобы разобраться хорошо, сначала надо понять, а зачем? Вдруг конкретно для меня он окажется бесполезен. Т.е. надо послушать людей, которые F# применяют на практике и по опыту расскажут, что в F# хорошо, а что плохо; что делать удобно, что неудобно; что работает быстро, а что медленно. А люди вместо этого рассказывают про какое там классное комьюнити. Да пофиг, какое там комьюнити, вы про сам язык расскажите. Комьюнити будет потом.