• На чём написан язык программирования C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Учтите, что язык программирования - это просто набор спецификаций и правил. Он написан на английском языке.

    Если же вас интересует на чем запрограммированы компиляторы языка С, то самые популярные нынче развивающиеся компиляторы написаны на C и C++ соответственно:
    gcc: https://github.com/gcc-mirror/gcc
    clang: https://github.com/llvm/llvm-project/tree/main/clang

    Вы спросите, а как компилятор языка Си написали на самом Си? Ответ прост - первые компиляторы были написаны на ассемблере. Они были очень простыми и тупыми, возможно не умели понимать все тонкости языка. Когда появился достаточно работающий компилятор с минимальным набором функций, можно было переписать его на Cи и скомпилировать первым компилятором. После этого стало можно компилировать компилятор на Си самим собой.

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

    А так, наверно, есть куча неподдерживаемых устаревших компиляторов Си на всевозможных языках.
    Ответ написан
    2 комментария
  • Как получить значение из объекта?

    @StockholmSyndrome
    На входе есть массив, который я перевожу в объект.
    нет, метод map возвратит массив

    скорее всего, вы имели в виду:
    const b = Object.fromEntries(a); // {1: "Вася", 2: "Петя", 3: "Коля", 4: "Федя"}
    Ответ написан
    1 комментарий
  • Почему метод .reduce выдает ошибку?

    miraage
    @miraage
    Старый прогер
    arr.reduce((acc, cur) => acc + cur.quantity * cur.price, 0)
    Ответ написан
    Комментировать
  • Возможно осилить Страуструпа в 16?

    Adamos
    @Adamos
    Целесообразно сходить на торренты и взять там ровно такую же пдф-ку бесплатно.
    Спрашивать на Тостере разрешения читать учебники - нецелесообразно.
    Ответ написан
    2 комментария
  • Фронтенд это настоящее программирование?

    @dimoff66
    Кратко о себе: Я есть
    Вы поймите откуда это идет: у людей с комплексом неполноценности есть потребность самоутверждаться.

    Если человек с комплексом неполноценности пишет на с++, он заявляет - только с++ это трушно, всякие питоны это дерьмо.

    Если человек с комплексом неполноценности пишет на питоне или ноде, он заявляет - бэкенд настоящие программисты, фронтенд дерьмо. Хотя чего там сложного на бэке? Получил запрос, сделал запрос к базе, отдал результат. Чем лучше спроектирована база - тем меньше манипуляций.

    Но человеку, пишущему на фронте тоже ведь надо самоутверждаться? Для него Бог придумал программистов 1С. То что они пишут на русском языке делает их нетрушными.

    Программистам 1С самоутверждаться не перед кем, поэтому они гнобят бухгалтеров.

    Весь мир сплошное самоутверждение, особенно в программировании, так как от постоянного интеллектуального напряжения засираются мозги. Выход - делать что тебе нравится и не попадаться в ловушку слов.
    Ответ написан
    2 комментария
  • Как создать новый объект на основе текущего?

    @casioo
    let result = data.map(item => {
      return {
        id: item.id,
        phone: item.phone,
        name: item.name,
        address: `${item.city}, ${item.street}, ${item.house}/${item.floor}`
      }
    })
    Ответ написан
    Комментировать
  • Как создать новый объект на основе текущего?

    0xD34F
    @0xD34F Куратор тега JavaScript
    data.map(({ city, street, house, floor, ...n }) => (
      n.address = `${city}, ${street}, ${house}/${floor}`,
      n
    ))
    Ответ написан
    Комментировать
  • Где взять базу слов русского языка?

    https://github.com/danakt/russian-words
    Использовал данную базу для написания инструмента для проверки орфографии. В файле скомбинировано несколько найденных мной баз, содержит русские слова во всех формах и русские имена. Так же есть файл со списком русских фамилий.
    Ответ написан
    1 комментарий
  • Правильный Rest Api?

    glaphire
    @glaphire
    PHP developer
    с точки зрения количества запросов лучше сэкономить и доставать ближайший ивент вместе с проектом (опираясь на статью о N+1), но с точки зрения чистоты ответа данных о конкретной сущности (проектах) это может быть лишним. Нужно ориентироваться на те показатели, которые более важны сейчас и в ближайшей перспективе
    Ответ написан
    Комментировать
  • Как решить задачу в Javascript?

    @kunjut19
    function func(a,  b,  c) {
        if(c > b && b > a) {
            return `${a**2} ${b**2} ${c**2}`;
        }
    
        return `${a/2} ${b/2} ${c/2}`;
    }
    Ответ написан
    1 комментарий
  • Как понять внутреннее устройство Promises в Javascript?

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

    Ответ написан
    Комментировать
  • Как узнать следующие даты недели?

    origami1024
    @origami1024
    went out for a night walk
    % 7
    Ответ написан
    Комментировать
  • Сделать флаг России из символов О на чистом js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вариант из 10 тыс. «о»


    И вариант из трёх «О»

    из трёх «О»

    Ответ написан
    3 комментария
  • Как привлечь провайдера к ответственности?

    @egn_onegin
    Всем участвующим в беседе доброго времени суток!
    Зарегистрировался исключительно из-за данного поста.
    Небольшое лирическое отступление: работаю в support регионального isp, в связи с чем приходится постоянно общаться с подобными всезнающими геймерами.
    Поскольку предварительно я почитал ответы автора сабжа на некоторые комментарии аудитории, то отвечать постараюсь максимально доступным языком.

    morfianes
    Согласно предоставленной тобой лично трассировке winmtr (по хопам):
    1. твой роутер;
    2. какой-то неизвестный провайдерский хост, предположительно, закрытый по icmp;
    3. очередной хост на сети твоего провайдера (возможно, промежуточный коммутатор или иное, предположительно, активное сетевое оборудование);
    4. gateway твоего провайдера, с которого тебе непосредственно предоставляется доступ во-вне (в интернет) - на этом ЗО (зона ответственности) твоего провайдера ВСЕ!!!
    Вот, лять, прямо вообще ВСЕ, от слова СОВСЕМ!!!
    5. ЗО вышестоящего оператора!!!
    и т.д.

    Ты молодец!! Красава!! Ресспектую!!
    Нагуглил, а может и в Яндексе поискал и нашел, 2ip.ru на котором "пробил" принадлежность проблемного, по твоему мнению, ipшника, а именно 94.25.8.129, и, казалось бы, вот ОНО!!!
    Ipшник находится в адресном пространстве, принадлежащем твоему провайдеру, но...
    Правильно - ничего!!!
    Вот, лять, прямо вообще НИЧЕГО!!! От слова СОВСЕМ!!!

    Тот, факт, что, согласно нарытым тобой данным, ipшник принадлежит Ростелекому, ну, т.е. твоему провайдеру, вообще ни о чем не свидетельствует.
    Как правильно заметил support Ростелекома, о чем и тебе сообщил, ты даже скриншот с перепиской скинул, но головой подумать дальше видимо чего-то не хватило.

    Согласно данным whois, ресурс с этим ipшником находится в сети Prestig_Internet.
    Ничего не смущает, не?!

    А теперь так же банально, как ты 2ip.ru разыскивал, берем и гуглим, ну Яндексом пользуемся, (тебе что удобнее??) Prestig_Internet и первой ссылкой, по каким-то причинам, enforta.ru.
    Немного странно, конечно, но и к этому вскоре подойдем.

    Чуть ниже в результатах поиска, хотя... не утруждайся - прикладываю ссылку: https://www.list-org.com/company/704092
    Сам же ты все равно не найдешь.
    Переходим по ссылке, читаем и, о Боже!!, выясняем для себя следующее:
    - Организация ООО "ПРЕСТИЖ-ИНТЕРНЕТ"... наверное имеет прямое отношение к сети Prestig_Internet, по крайней мере это вполне логично предположить.

    По всей видимости у ООО "ПРЕСТИЖ-ИНТЕРНЕТ" в свое время не хватило адресной емкости, в связи с чем у Ростелеком, да-да, именно у твоего провайдера, просто напросто был куплен ipшник.
    Вот так просто!!! Взяли и купили у Ростелеком ipшник, прикинь, ля!!!
    Однако, полагаю, что данный ipшник Ростелеком просто взял и "зажал", т.е. данный адрес не является PI, т.е. провайдеро-независимым, но это ты потом загуглишь, ну или в Яндексе найдешь.
    По факту расторжения договорных отношений между ООО "ПРЕСТИЖ-ИНТЕРНЕТ" и Ростелеком его (ipшник), скорее всего, придется вернуть.

    Читаем далее:
    - Статус: ПРЕКРАЩЕНИЕ ДЕЯТЕЛЬНОСТИ ЮРИДИЧЕСКОГО ЛИЦА ПУТЕМ РЕОРГАНИЗАЦИИ В ФОРМЕ ПРИСОЕДИНЕНИЯ с 01 ноября 2017 года.

    И тут, казалось бы, все мои доводы рухнули, разлетелись в пух и прах, но... х... ты угадал!!
    Листаем ниже!!
    - Правопреемники: АО "ЭР-Телеком Холдинг" (брэнды Дом.ру и Энфорта, если, вдруг, ты не в курсе).
    Теперь более понятно, при чем тут Энфорта. Если все еще не понятно - читай далее.

    Таким образом получаем следующее:
    - ipшник принадлежит Ростелеком, ибо он не является PI (предположительно);
    - железо, которое работает на этом ipшнике, принадлежит АО "ЭР-Телеком Холдинг" - на основании данных list-org.com;
    - какие отношения в разрезе данного ip адреса между Ростелеком и АО "ЭР-Телеком Холдинг" мне вот прям до звезды фиолетово.

    Могу осмелиться предположить, что маршрутизация от тебя, а по факту от твоего роутера 192.168.0.1 (D-Link, наверное), до конечного ресурса, а именно 162.249.73.10, который, как бы, тоже нихрена не у тебя под боком находится, строится по принципу OSPF... а может BGP... а может... (да, простят и поправят, в случае ошибки, коллеги по цеху).
    Что такое OSPF/BGP потом загуглишь, ну или в Яндексе найдешь.
    Если не найдешь, привлекай Rambler к содействию.
    Конечно, мои предположения к фактически используемой маршрутизации на сети твоего провайдера, а так же точкам обмена трафика с другими операторами связи, остаются только предположениями, но... если... вдруг...

    Итого:
    - 212.48.195.0 - граница ЗО твоего провайдера (Вот, лять, прямо вообще КОНЕЦ!!! От слова СОВСЕМ!!!), с этого момента Ростелеком тебе должен/обязан (читай, как больше нравится) чуть меньше, чем ни...чего;
    - ресурс 94.25.8.129 фактически принадлежит АО "ЭР-Телеком Холдинг", несмотря на то, что ipшник находится в адресном пространстве Ростелеком, контакты ЭР-Телеком найдешь, тут уже совсем все изи;
    - менять маршрут ради тебя одного такого пи...дельного никто не станет - хлопотно;
    - почитай/ознакомься: https://habr.com/ru/post/134892/ - доступным для понимания языком написано;

    P.S. уж слишком дохрена вас таких... "интересных", платят 500рэ за 100М, а голову выделывают...
    Ответ написан
    6 комментариев
  • Как решить эту задачу си?

    bingo347
    @bingo347
    Crazy on performance...
    Для начала нужно понимание, что памятью на стеке управляет компилятор, и для каждой функции эта память имеет фиксированный размер. А все потому, что в ассемблере, в который скомпилится наш C код нет переменных, вместо них компилятор просто проставит смещения от указателя на конец стека на старте функции. Именно по этому компилятору важно знать размеры всех сущностей на стеке.
    Изменить этот размер в рантайме нельзя, поэтому единственный способ решить эту задачу с массивом символов на стеке - выделить массив с достаточным запасом памяти, чтоб хватило и на исходную строку и на вставляемую подстроку.
    А вот память в куче динамическая. И все аллокации работают именно с ней. И главное мы ее можем выделять в рантайме по мере надобности.
    Учитывая, что массивы в C - это по сути сахар над указателями, то смело можете заявлять своему преподу, что указатель на несколько подряд идущих char в куче и массив char - это одно и то же.

    Вообще, по нормальному я бы объявил структуру вроде такой:
    typedef struct {
    	char* buffer;
    	size_t capacity;
    	size_t length;
    } string;
    и дальше бы работал с ней, заодно разбив код на небольшие функции. Но преподы программирования народ от разработки далекий, и кроме своих лабараторок в программировании не бум-бум в большинстве своем. А в комментах к вопросу было про то, что структуры нельзя...
    Поэтому решение в лоб и в стиле универских лаб:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main() {
    	size_t capacity = 1 << 4; // на старте буду выделять 16 байт
    	size_t length = 0; // строка пока пустая, поэтому 0
    	char* str = malloc(capacity);
    	if (str == NULL) { // с памятью в куче может и облом быть
    		return 1; // вернем код ошибки
    	}
    	printf("Write string and press ENTER to continue:\n");
    	while(1) { // читать символы будем до скончания веков ))
    		char c = getchar();
    		if(c == 13 || c == 10) break; // ну или пока юзер не нажмет ентер
    		length++; // увеличим счетчик символов
    		if(length > capacity) { // если новый символ не влазит в выделеную память
    			capacity <<= 1; // то удвоим ее
    			char* new_str = realloc(str, capacity); // и перевыделим
    			if (new_str == NULL) { // опять чекнем, вдруг облом
    				free(str); // ресурсы надо освобождать
    				return 1; // вернем код ошибки
    			}
    			str = new_str; // в str теперь невалидный указатель, можем его заменить
    		}
    		str[length - 1] = c; // запомним считанный символ
    	}
    	// Здесь решение с вставкой подстроки
    	// с учетом того, что у нас строка str
    	// с длиной length и выделеной памятью под нее capacity
    	free(str); // ресурсы надо освобождать
    	return 0; // вернем код успешного завершения
    }
    с самой вставкой подстроки надеюсь справитесь?
    Ответ написан
    6 комментариев
  • Как организовать работу над проектами из любого места?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Вы, видимо, не так понимаете суть современных систем контроля версий.
    1. Вы настраиваете работающее окружение на работе и дома.
    2. Делаете клоны проекта на работе и дома.
    3. Работаете над проектом, каждое осмысленное изменение коммитите и время от времени отправляете в центральный репозиторий на гитхабе. Каждый раз приступая к работе обновляете локальный клон и продолжаете работать. Если фича требует много изменений, то вы можете сделать несколько коммитов в отдельную ветку и залить ветку на сервер. На другом компе вы тоже можете работать с этой веткой. Ветка лично ваша. У вас может быть много веток. Когда закочите работу над фичей - подольёте изменения в мастер.
    Ответ написан
  • Как удалить символ в конце строки, если он есть?

    0xD34F
    @0xD34F Куратор тега JavaScript
    str.replace(/:$/, '')
    
    // или
    
    str.match(/[^:]+:[^:]+/)[0]
    
    // или
    
    str.match(/[^:]+/g).slice(0, 2).join`:`
    
    // или
    
    str.split(':', 2).join(':')
    
    // или
    
    str.slice(0, str.length - (str.slice(-1) === ':'))
    Ответ написан
    1 комментарий
  • Сколько человек нужно чтобы создать сайт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    От одного до бесконечности.
    Ответ написан
    5 комментариев
  • Почему не получается удалить событие?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    (function(e) {}) === (function(e) {}) // false

    Хотя код функций идентичен – они не равны, т.к. сидят в разных областях памяти.

    Как починить:
    function func(e) {
      console.log(e.target.id);
    }
     
    // Назначить событие
    document.body.addEventListener('click', func);
    
    // И сразу его удалить
    document.body.removeEventListener('click', func);
    Ответ написан
    4 комментария