• Можно ли писать скрипты на C++?
    +1
    Я должен подготовить «интерпретатор» скрипта c++. Написать его можно на чем угодно, да хоть на bash (это в последний раз, хотя не точно). Вот что у меня получилось.

    Позволите непрошенное ревью?


    Заголовок спойлера
    #!/bin/bash
    # Для такого простого скрипта можно и не требовать Bash,
    # достаточно было бы /bin/sh.
    
    msg_file=/dev/null
    #msg_file=/dev/stdout
    
    tmp_path=$HOME"/.cache/c++/"
    # Тут бессмысленные кавычки. Чтобы от них была польза,
    # стоило взять в них всю правую часть присваивания целиком.
    
    mkdir -p $tmp_path
    # Нужно так: mkdir -p "$tmp_path"
    # Иначе пробелы в $HOME могут полностью изменить смысл
    # команды.
    
    tmp_file=$1".c++"
    exe_file=$1".bin"
    # Снова бессмысленные кавычки. Кроме того, неплохо было бы
    # проверить, что переменная вообще установлена, прежде чем
    # что-то компилировать.
    
    if test $1 -nt  $tmp_path$exe_file; then
        # Вы же вроде в шебанге потребовали Bash, так зачем
        # использовать test? И да, снова кавычки. Это в [[ строки
        # можно не квотировать.
    
        # Кроме того,
        # у вас часто повторяется выражение "$tmp_path$exe_file",
        # имеет смысл сделать для него переменную. А заодно добавить
        # в конкатенацию слеш, чтобы логика не зависела от того,
        # оканчивается ли $tmp_path на слеш или нет.
    
        echo "Need to recompile.." > $msg_file
        # Я бы просто убрал дебажные сообщения, чтобы не смущать
        # читателя. Иллюстрации идеи они не помогают.
    
        tail -n +2 $1 > $tmp_path$tmp_file
        # Нужны кавычки. Кроме того, если вырезать из исходника
        # первую строку, то диагностические сообщения компилятора
        # станут указывать не туда. Мой вариант:
        # echo -n "//" | cat -- - "$1" > "$tmp_path/$tmp_file"
    
        eval "g++ -o $tmp_path$exe_file $tmp_path$tmp_file > /dev/null 2>&1"
        # Я не совсем понял, для чего здесь eval?
        # Почему бы просто не вызвать компилятор без него?
    
        if [ $? -eq 0 ]
        then
        echo "Compiled ok" > $msg_file
        else
        echo "Compile error" > $msg_file
        exit 255
        fi
    fi
    
    eval "$tmp_path$exe_file $@1"
    # Что значит конструкция "$@1"?
    
    # Тут следует сделать как-то так:
    # shift ; exec "$tmp_path/$exe_file" "$@"
    # 
    # В этом случае запускаемая команда заменит собой запустивший её
    # процесс и не возникнет проблем с перенапрвлением ввода и вывода
    # внутрь и извне "скрипта".
  • Вольный опус про найм, собеседования и трэш на рынке IT-кадров
    0
    Хотите спросить про интерактивный ребейз — так спрашиваете прямо что это такое и зачем нужно

    Имхо, вполне себе нормальный вопрос на собеседовании. Если человек знает, что такое интерактивный ребейз и как он делается, но не может ответить на вопрос про git rebase -i, то как же он до сего дня ребейзил свои ветки? Более удобного механизма в гит пока что не завезли.

  • Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»
    0
    history344.blogspot.com/2011/05

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

  • Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»
    +2
    (Цитата из поста по ссылке:) У нас была очень хорошая школа — школа № 344 города Ленинграда. Еще у нас была классная учительница по химии — Людмила Васильевна Махова. За заслуги в области преподавания ей вручили премию в размере 70000 (!) рублей, которую она передала школе, и на эти деньги приобрели компьютерный класс.

    Эта тема поднималась у вас в ЖЖ в комментариях, но неужели вы правда верите, что бывают премии в размере нескольких тысяч месячных окладов? Пусть даже и in Soviet Russia.

  • Не в момент выполнения, а в момент проектирования
    0

    К слову, gcc и clang даже на -O1 догадываются преобразовать printf с тривиальной форматной строкой в puts. Но, почему-то, не MSVC.

  • Компьютер на базе вентилей NOR: внутри бортового управляющего компьютера «Аполлона»
    0
    Или вот русский перевод учебника Харриса и Харрис: в нем в тексте везде использованы ИЛИ-НЕ.

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

  • Модернизация класса информатики в российской школе на малинке: дёшево и сердито
    +1
    Никогда в школе его не любил — громоздкий и неудобный язык, и на Си перешел с большим удовольствием

    Что такого есть в C (без плюсов?), чего концептуально нет в Turbo Pascal? Ветвления и циклы — есть, процедуры и функции — есть, ООП с инкапсуляцией, наследованием, полиморфизмом — есть. Ручное управление динамической памятью, указатели, ассемблерные вставки — есть. Не хватает только шаблонов.


    Школьник, в совершенстве освоивший «мёртвый» паскаль, за полгода легко переучится на любой мейнстримовый язык. Школьник, изучивший в школе модный JavaScript, рискует так и остаться JavaScript-разработчиком.

  • Как я проработала 3 месяца в Я.Маркете и уволилась
    0
    А что по Вашему должно происходить [...]?

    Имхо, при вводе «05» должен отсекаться ведущий ноль и значение сбрасываться в просто «5».

  • Благодаря двухфакторной аутентификации я лишился всех вложенных денег и 3 лет работы
    +1
    Еще вроде вышли на вариант с IMEI. Но там древний телефон, который покупали лет 10 назад. Коробку давно выбросили.

    А сам телефон не выбросили? Команда *#06# покажет IMEI.

  • Как я не стал программистом в 35 лет
    0
    Как думаете, этот список книг релевантен?

    Если вы хотите получить место в аспирантуре по этому направлению — ещё как релевантен.


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

  • Как я разочаровался в Google Play
    +2
    Если интересно — вот тут она есть: https://scpfoundation.app/?utm_source=habr.com&utm_medium=directLink&utm_campaign=UE_law_comment

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

  • Вот зачем нужна школьная алгебра
    0

    Разве этот рефакторинг соответствует вашему примеру в статье?

  • Вот зачем нужна школьная алгебра
    0
    В качестве простейшего примера, приведу «введение поясняющей переменной»

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


    if (suicideMode && system("rm -rf /") == 0)
        puts("patch applied!");
  • Какой язык — D, Go или Rust имеет лучшие перспективы заменить C и почему?
    +2
    Это далеко не самый худший перевод

    Я бы сказал, это необравданный буквализм: нет никакой необходимости вставлять лицо в перевод «is facing», как нет необходимости упоминать бога при переводе «bless you». Но этот перевод в целом получился очень буквальным.


    Справедливости ради, текст сам по себе не самый простой, в лоб не переводится. Из любопытства я попробовал перевести первые три абзаца, получилось не сразу и с элементами отсебятины.


    Немного спорных переводческих решений

    Хотя моя предвзятость в этом вопросе очевидна, я постараюсь ответить на него откровенно. Несмотря на статус одного из создателей D, я пристально слежу за присходящим с Go и Rust, и я определённо знаю многие неприглядные вещи о D. Было бы неплохо, если бы люди на аналогичных позициях в сообществах Rust и Go тоже высказали бы здесь свои мнения. Итак, начнём.


    Перво-наперво, в формулировку вопроса нужно добавить C++. Причём, куда бы вы его ни поставили — в пару к C или в компанию к предполагаемым кандидатам на его замену — без C++ уравнение будет неполным: [из рассматриваемых,] это язык, ближайший к C, и очевидный шаг вперёд от него. Принимая во внимание [почтенный] возраст C++, я буду полагать, что автор вопроса хочет найти замену не только для C, но и для C++.


    Каждый из рассматриваемых языков в чём-то фундаментально лучше конкурентов (ниже я так и буду говорить: «на порядок», потому что это действительно так как минимум для некоторых количественных показателей) и в чём-то значительно им уступает. Поэтому и будущее этих языков, и их [возможный] успех в вытеснении С, зависит от того, как они смогут распорядиться своими фундаментальными преимуществами и как они смогут обойти свои слабые стороны.


    Кстати замечу, что для понимания текста важен контекст: Александреску отвечает на чей-то вопрос на Quora и прямо ссылается на формулировку этого вопроса.

  • На пенсию в 22
    0
    Производные там взять во время компиляции на темплейтах...

    Маленький оффтопный вопрос: автопроизводные или аналитические?

  • Установка sdl2 на основные дистрибутивы
    +2

    А зачем «интегрировать» SDL в популярные IDE по-отдельности, когда можно использовать CMake на всех платформах и не хардкодить никаких \Mac\Home\Downloads\SDL2-2.0.9\include в свойствах проекта? Вся статья — вредный совет из серии «Как писать непереносимый софт, использую кроссплатформенный язык и кроссплатформенные библиотеки».

  • Самая дорогая ошибка в моей жизни: подробно об атаке на порт SIM-карты
    0
    Почему не завести свой email сервер? Домен стоит 2 бакса в год. На нём можно сделать сколько угодно email-ов.

    Купить домен и арендовать виртуалку для своего почтового сервера, конечно же, можно, но под каким имейлом вы зарегистрируетесь на сайте регистратора и облачного провайдера?

  • Превращаем DSLogic Basic в DSLogic Plus
    +2
    [...] полезно понимать для желающих повторить, сколько это занимает времени.

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

  • Превращаем DSLogic Basic в DSLogic Plus
    +5
    И сколько у вас стоимость часа?

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


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

  • Как используя PVS-Studio можно улучшить Visual C++ 2017 Libraries
    0
    Не знаю, получилось в этот раз с уваженеим или нет… :)

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

  • С новым годом, с новым MQTT/UDP
    0

    Насколько мне известно, непосредственно сам HMAC-MD5 ещё никто не взломал.

  • Как понять, что вам не рады или обсуждаем приемы выдавливания работников из компании
    +3
    это аксиома — одна строчка это крайне мало, не надо быть экспертом чтобы понять это :-)

    А если в диффе за день — минус тысяча строк, то разработчик, получается, вообще должен заплатить компании за свою работу?


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

  • xonsh — python как замена shell
    +1
    Основная особенность xonsh в том, что он «магически» угадывает что вы ввели
    То бишь это Punto Switcher…
    Думаю, тут неспроста слово «магически» взято в кавычке: ничего xonsh не угадывает, а различие между вызовом внешних команд и питоновским кодом однозначно детерминировано грамматикой скриптового языка.

    Может сложиться ситуация, при которой моя пайтон-функция rm с аргументами -rf / может восприняться как вызов шелла?
    Конкретно такая ситуация сложиться не может. Ваш пример с rm -rf *; /foo всё же несколько про другое.
  • Алгоритм: Как найти следующую лексикографическую перестановку
    +1

    Обсуждение статьи не будет полным без ссылки на std::next_permutation. Хотя лично я никогда не понимал, что эта функция вообще делает в стандартной библиотеке С++.

  • Воронеж, ждем тебя (и не только) + конкурс
    0

    Один я считаю, что правильным ответом на все опубликованные в статье вопросы должно быть «А не всё ли равно, сколько»? Какой-то набор унылых бесполезных фактов.

  • Пишем простой транслятор на Лиспе — I
    +1
    В реальной жизни для такой задачи часто берут flex и bison

    Что вы, это же магические орудия древних — причём, суда по генерируемому ими коду, предназначенные для ритуальных пыток. Лучше уж ragel и lemon.

  • В Новой Зеландии запрещают пластиковые пакеты
    +3
    [Ватные палочки для ушей — ] это ведь реально важная штука в наборе по уходу за собой.

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

  • habrahabr.ru → habr.com
    0

    Теперь проделайте то же самое с первым постом в цепочке — результаты окажутся далеко не столь радужными. (UPD: Хотя, впрочем, не так уж и плохо выглядит.)

  • habrahabr.ru → habr.com
    0

    Вы слишком хорошего мнения об автоматизированном переводе. То, что вы предлагаете, будет выглядеть и ощущаться как русский Алиэкспресс.

  • habrahabr.ru → habr.com
    +1
    И что в этом плохого?

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


    вне РФ многоязычие встречается намного чаще, чем вы думаете

    Многоязычие широко представлено и внутри РФ, но много ли вы видите на этом сайте статей и комментариев на татарском, чеченском или украинском? Чем для иностранцев русский язык принципиально отличается от этих языков?


    В моей фб-ленте я регулярно встречаю посты с комментариями на двух-трёх-четырёх разных языках вперемешку

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

  • habrahabr.ru → habr.com
    +6
    Мы рассчитываем [...] и на глобальную аудиторию.

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

  • habrahabr.ru → habr.com
    +21

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


    С моей точки зрения, интернационализация приведёт к тому, что:


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

    В общем, завоевание мира может и не случиться, но сложившейся экосистеме ресурса урон будет нанесён в любом случае.

  • Маленький ноутбук для системного администратора
    0
    Забиндить все что угодно можно на все что угодно.

    К сожалению, это не так. Попробуйте программно поменять местами клавиши Ctrl и, например, Return (или любую алфавитно-цифровую клавишу) — и вам это не удастся. Связано это с тем, что клавиши-модификатор отличаются от немодификаторов как на аппаратном уровне, так и на уровне протоколов PS/2 и USB-HID.

  • Дискредитация специалистов или современные собеседования
    +3
    Только полные задроты сидят бесплатно после работы в оупенсорсах и это медицинский факт.

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


    В качестве альтернативного решения проблемы «у меня большой опыт, но мне нечего показать» могу предложить, ну не знаю, выступать на конференциях (хинт: это тоже можно делать за счёт работодателя, если повезёт) или статьи/книги писать. Но, возможно, с вашей точки зрения это тоже удел полных задротов, а опыт настоящих спецов можно заметить на глаз по свечению ауры.

  • Vivaldi 1.14 — продольно-поперечная версия
    +3

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


    Заголовок спойлера

    image


    Здесь кавычки 「...」должны были повернуться на 90° вправо, признак долготы «ー» стать вертикальным, а остальные выделенные символы — сместиться не вниз относительно квадрата, а вправо. Кстати, хромиум справляется c корректным отображением таких текстов, посмотрите, например, статью японской википедии, посвящённой вертикальному и горизонтальному письму:


  • JavaScript превзошел всех
    0
    Qt, нормальная лицензия которого начинается от 4к$

    А чем ненормальна бесплатная LGPL? До тех пор, пока ваше приложение просто использует Qt как библиотеку, вы не обязаны раскрывать никаких своих исходников.

  • Обзор мобильных приложений для персонального финансового учета
    0
    Ну вот например в баре сидишь [...]
    Программка всё сама загружает в приложении из банка

    Ни разу не расплачивался карточкой в баре — говорят, это не труъ.


    Tip 3. Bring cash
  • Git снизу вверх
    +1

    В гите с некоторых пор есть механизм для неполного клонирования, можно попробовать использовать его у вас. Если вам нужно оставить, например, последние 100 коммитов истории, искомые команды будут какие-то такие:


    # mv /etc/.git /tmp/etckeeper.git
    # git clone --bare --depth 100 file:///tmp/etckeeper.git /etc/.git
    # rm -rf /tmp/etckeeper.git

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


    Предложенный способ привлекателен тем, что убирает из репозитория коммиты без изменения хэшей оставшихся, как это сделал бы git rebase. Но я не гарантирую отсутствие подводных камней.

  • Почему компания меня потеряла
    +1
    Да просто банально комфортнее писать код с инструментами, чем ручкой на листике. Хотя бы потому, что разработчик проводит 8+ часов в рабочий день именно за этими инструментами, а не за блокнотом с ручкой.

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

  • Почтовые ящики, которые и не ящики вовсе…
    0
    Повторюсь: и?

    И ничего.


    Или где-то утверждалось, что weak_ptr не может быть такой прокси-ссылкой?

    Или где-то утверждалось, что может?