11
Karma
0
Rating
Дмитрий Чернов @cher-nov

Ещё один программист.

Сериал «Чернобыль»: смотреть и думать

0

эскобар.jpg
Хотя HBO спасибо как минимум за аутентичность обстановки, похвальную для американского фильма. Не удивился бы, окажись написание "Byelorussian" вообще пробитым сквозь самоцензуру политкорректности с боем, лол.

Патриот Зимбабве потратил $5000, чтобы оцифровать родную страну на Google Street View

-6

Мугабе? Так вот он и стал следствием независимости, придя всего-то через 7 лет после её обретения.
Другой вопрос, что до неё белые сами удивительным образом умудрились настрополить против себя огромную часть местного населения, поэтому про виноватого тут ещё бабка надвое сказала.


А мужик умница. Это вам не ватники с либерахами.
Тут похвален конкретно сам факт траты собственных денег ради своих же соотечественников.

«Логомашина» делает бесплатные логотипы за коммент

0

Всё так, но меня ради интереса автор этого логотипа и попросил написать. :)

«Логомашина» делает бесплатные логотипы за коммент

+1

Doom 2D Forever


Наш портал, посвящённый всем двухмерным DOOM'ам как таковым и Doom 2D Forever в частности.


Ремейк старой российской игрушки Doom 2D 1996 года выпуска, которая в свою очередь была сделана как демейк оригинального DOOM с переносом его в 2D атмосферу. Добавлена сетевая игра и много всяких плюшек.

Как уехать в Германию учиться и работать на примере моей эмиграции

+4

image


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


А Норвегия не показатель совершенно, у них до сих пор нет толком общенационального языка. Есть букмол и нюношк, которые вдобавок на отдельные категории делятся.

Жизнь в Германии глазами моей жены

+2

Суть раскрыта, вопрос закрыт. Благодарю.
Разводить политоту не хочу, не собирался и не буду.

Жизнь в Германии глазами моей жены

0
Проблема в том, что она не исчезает, как только выключаешь телевизор.

Не знаю, о чём Вы. Честно. Может быть, меня спасают альтруизм и человеколюбие. И то, что я стараюсь не обсуждать политику с людьми не своего поколения.


А еще не исчезает изменившийся в 2014 году в два раза курс рубля.

А вот это уже весьма полезное уточнение, нежели просто "негативные тенденции после Крыма". :)


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

Не встречал такого в живом разговоре. Соцсети же я не воспринимаю иначе, как борьбу одних ботов с другими (и я не только про тех, кто на зарплате).


Не исчезают уголовные дела за репосты в соцсетях и много что еще не исчезает.

Тут согласен. Но с такого и надо было начинать, да и началось подобное задолго до Крыма.

Жизнь в Германии глазами моей жены

-2
— В какой момент вы решили переезжать в Германию?

— Это всё назрело после 2014-го года, после истории с Крымом в стране стали развиваться неприятные для нас настроения. Мы поговорили с моим мужем и решили, что при возможности будем переезжать в Европу…

Вот никогда не мог взять в толк такого, если честно.


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


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


Может быть, раскроете причину поподробнее? Мне правда интересно, никаких претензий.

Telegram MTPROTO Proxy — всё что мы знаем о нём

0

Самое интересное, что решение проблемы получается лишь частичное. Проксирующих MTProto-серверов даже в самом лучшем случае будет на порядки меньше, чем в мире доступно socks5-серверов. А тех, кто откажется от рекламы, будет и того меньше. Поэтому если Роскомнадзор таки дойдёт до блокировки Telegram при помощи DPI (а он дойдёт), то удобство использования всё равно снизится достаточно заметно.

В США испытают новый метод смертной казни: вдыхание азота

0
Позволю себе с Вами не согласиться — началось всё это ещё в перестройку. Рекомендую всем интересующимся историей СССР почитать/посмотреть/послушать перестроечные СМИ — увлекательное зрелище самобичевания и мазохизма, скажу я Вам.

Так что обратно качнувшийся маятник — это как раз пресловутые «можем повторить». У Галковского про это, ИМХО, неплохо написано, даже при всей одиозности сего персонажа.

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

В США испытают новый метод смертной казни: вдыхание азота

0
Вы так говорите, как будто мне это нравится. А ведь это не так, на самом-то деле.
Я за справедливость. И если по справедливости, то те же немцы осуждать Красную Армию за это не имеют никакого морального права. Равно как и другие страны Оси. Но ведь осуждают же.

В США испытают новый метод смертной казни: вдыхание азота

+1
Тут много писали про гуманность смертной казни, закину и я свои пять копеек.

За свою недолгую жизнь (а мне 21,5 года) я прошёл эволюцию взглядов от «давить этих мразей под прессом, а останки использовать в качестве биотоплива» до полного неприятия смертной казни за исключением военного времени.

Рассуждать на тему можно много и долго, я же в таких случаях прерываю дискуссию в голове и стараюсь ухватить мысль, после которой любая рефлексия лично для меня потеряет всякий смысл. Например по поводу наших войск в Сирии — при Асаде женщины там могли на пляжи выходить в купальниках, притом что население арабское. Знание подобных фактов зарубает любые «а если» и «но ведь» на корню.

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

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

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

Сверху упоминали Солженицына — это из той же оперы. К слову, все его талмуды с лёгкостью перевешивает «Открытое письмо Сталину» Раскольникова, ИМХО.

Собственно, наличие смертной казни в США, Белоруссии, да и неполная отмена её в России меня как гуманиста очень сильно печалит.

Dixi. Минусуйте.

[Опрос] Ваш самый нелегальный/неэтичный проект

Программирование ≠ информатика

0

А тем временем, один из создателей UML упорно пилит очередную таблетку от всего, которая решит все наши проблемы ещё раз:


В настоящее время Якобсон возглавляет проект SEMAT, посвящённый созданию единой теории, способной стать фундаментальным научным основанием для процесса разработки программного обеспечения. Ядро SEMAT было одобрено комитетом по стандартизации OMG и принято как свободный стандарт. Активно продвигает инициативу и принимает участие в написании статьи в английской Википедии, посвящённых проекту.

https://ru.wikipedia.org/wiki/Якобсон,_Ивар
https://en.wikipedia.org/wiki/SEMAT
http://semat.org/

На пути к Go 2

0

Так и вижу уже чью-нибудь статью под названием "Go 2 Considered Harmful" и прочий сарказм о созвучии "Go 2" и "goto".
Не совсем удачное название, ИМХО.

Аналог std::vector из C++11 на чистом C89 и как я его писал

Аналог std::vector из C++11 на чистом C89 и как я его писал

0

1) Добавил пример из сообщения выше в статью.


2) Да, но нет, потому что присвоить строковой литерал нельзя — мы в Си. :)
Но можно сделать вот так, да:


strcpy( family[2].Name, "Batman" );

Аналог std::vector из C++11 на чистом C89 и как я его писал

0
Код примера.
#include <stdlib.h>
#include <stdio.h>

#include "genvector/genvector.h"

typedef struct person_s {
  char Name[32];
  int Age;
} person_t;

GVEC_INSTANTIATE( person_t, person, GVEC_USE_VAL, GVEC_USE_REF );

int main() {
  gvec_person_t family = gvec_person_new(3);

  gvec_person_push( &family, (person_t){
    .Name = "Alice",
    .Age = 30
  } );
  gvec_person_push( &family, (person_t){
    .Name = "Bob",
    .Age = 32
  } );
  gvec_person_push( &family, (person_t){
    .Name = "Kate",
    .Age = 10
  } );

  printf( "%zu\n", gvec_count( family ) );
  while ( gvec_count( family ) > 0 ) {
    person_t member = *gvec_person_back( family );
    printf( "name %s, age %d\n", member.Name, member.Age );
    gvec_pop( family );
  }

  gvec_free( family );
}

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

Аналог std::vector из C++11 на чистом C89 и как я его писал

Аналог std::vector из C++11 на чистом C89 и как я его писал

0

Спасибо.
А про "кроссплатформенный ассемблер" — это же ирония. Там всё предисловие ею заляпано.

Аналог std::vector из C++11 на чистом C89 и как я его писал

0

Добавил, спасибо. Однако эта реализация тоже не лишена тех же недостатков, которые разобраны прямо после списка. :)

Аналог std::vector из C++11 на чистом C89 и как я его писал

0
Или иметь возможность вручную увеличить размер.

Не заметил сразу.
Это есть, кстати говоря. См. gvec_resize() и gvec_reserve().

Аналог std::vector из C++11 на чистом C89 и как я его писал

0

Благодарю.


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


  • конкретные детали реализации специализирования макросами, в частности то, как именно реализовано указание передачи и возврата по ссылке или по значению;
  • статический и модульный подходы к использованию библиотеки (и их поддержка ею самой);
  • почему последний коммит на момент публикации — это монстр под названием "Полностью изменён интерфейс вектора".

Однако было решено не заниматься переписыванием ReadMe из репозитория. К тому же, для иллюстрации потребовались бы большие куски кода. Это всё раздуло бы статью и сделало бы её менее приятной для чтения, и это при живом-то наличии вроде аккуратного репозитория.


Смысл пункта (5) прост: если типы значений в двух разных векторах имеют одинаковый размер, то мы можем прочитать вектор одного типа как вектор другого, и наоборот. У меня был конкретный пример использования, где это было полезно.


Пункт (7) подразумевает, что вектор ведёт себя аналогично std::vector из C++11, а набор его функций идентичен (пусть и слегка неполон). Я в самом деле сидел с открытым cppreference.com и реализовывал поведение вектора и его хранилища так, как описано там.


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

Описанное Вами — это по сути изменение размера вектора плюс один цикл по элементам. Такую задачу в виде функции можно решить только определив callback присваивания. С другой стороны, более элегантно с точки внешнего вида кода пользователя будет вариант с макросом, которому будут переданы массив назначения и исходный массив. Однако такой вариант будет заметно выбиваться из изначальной концепции "не делаем функции макросами".


Я честно пока не решил, какой из этих вариантов лучше, а поскольку это не входило в необходимый мне (и в итоге реализованный) минимум возможностей, то я оставил это на потом. Быть может, я потом напишу отдельно заголовочные файлы для поддержки подобных вещей. Также были планы дописать отдельно некоторые дополнительные функции для использования этого вектора в качестве динамической строки. Есть намётки и на систему callback'ов, и на итераторы. Но — не сейчас.


Тем не менее, я буду рад появлению в репозитории issue, посвящённых таким вещам, а также pull request'ам.

Аналог std::vector из C++11 на чистом C89 и как я его писал

+1

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


Единственная проблема в том, что написание таких возможностей не было основной целью создания этой библиотеки. Однако я буду рад, если кто-нибудь кинет мне PR, реализующий это. :)

Аналог std::vector из C++11 на чистом C89 и как я его писал

0

Простите, если заголовок желтоват — у меня родители журналисты как-никак. :)

Аналог std::vector из C++11 на чистом C89 и как я его писал

0
offtop

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

Аналог std::vector из C++11 на чистом C89 и как я его писал

+8

Да, знаю про это. Как-никак один из важнейших нюансов при написании динамического массива. :)


Нет, у меня именно что происходит увеличение в 1.5 раза. Причём коэффициент можно изменить, переопределив GVEC_GROWTH_FACTOR при компиляции библиотеки.


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