В современной математике комплексное число является одним из фундаментальнейших понятий, находящее применение и в «чистой науке», и в прикладных областях. Понятно, что так было далеко не всегда. В далекие времена, когда даже обычные отрицательные числа казались странным и сомнительным нововведением, необходимость расширения на них операции извлечения квадратного корня была вовсе неочевидной. Тем не менее, в середине XVI века математик Рафаэль Бомбелли вводит комплексные (в данном случае точнее сказать, мнимые) числа в оборот. Собственно, предлагаю посмотреть, в чем была суть затруднений, доведших в итоге солидного итальянца до подобных крайностей.
Здесь могла бы быть моя специализация
Насколько медленны iostreams?
7 min
80KПотоки ввода-вывода в стандартной библиотеке C++ просты в использовании, типобезопасны, устойчивы к утечке ресурсов, и позволяют простую обработку ошибок. Однако, за ними закрепилась репутация «медленных». Этому есть несколько причин, таких как широкое использование динамической аллокации и виртуальных функций. Вообще, потоки — одна из самых древних частей стандартной библиотеки (они начали использоваться примерно в 1988 году), и многие решения в них сейчас воспринимаются как «спорные». Тем не менее, они широко используются, особенно когда надо написать какую-то простую программу, работающую с текстовыми данными.
Вопрос производительности iostreams не праздный. В частности, с проблемой производительности консольного ввода-вывода можно столкнуться в системах спортивного программирования, где даже применив хороший алгоритм, можно не пройти по времени только из-за ввода-вывода. Я также встречался с этой проблемой при обработке научных данных в текстовом формате.
Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
а aesamson даёт такую рекомендацию
В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
Вопрос производительности iostreams не праздный. В частности, с проблемой производительности консольного ввода-вывода можно столкнуться в системах спортивного программирования, где даже применив хороший алгоритм, можно не пройти по времени только из-за ввода-вывода. Я также встречался с этой проблемой при обработке научных данных в текстовом формате.
Сегодня в комментариях у посту возникло обсуждение о медленности iostreams. В частности, freopen пишет
Забавно смотреть на ваши оптимизации, расположенные по соседству со считыванием через cin :)
а aesamson даёт такую рекомендацию
Можно заменить на getchar_unlocked() для *nix или getchar() для всех остальных.
getchar_unlocked > getchar > scanf > cin, где ">" означает быстрее.
В этом посте я развею и подтвержу некоторые мифы и дам пару рекомендаций.
+86
Теория категорий для программистов: предисловие
5 min
109KTranslation
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.
Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
+47
Категория: суть композиции
7 min
62KTranslation
Это вторая статья в цикле «Теория категорий для программистов».
Категория — очень простая концепция.
Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.
Категория — очень простая концепция.
Категория состоит из объектов и стрелок, которые направлены между ними. Поэтому, категории так легко представить графически. Объект можно нарисовать в виде круга или точки, а стрелки — просто стрелки между ними. (Просто для разнообразия, я буду время от времени рисовать объекты, как поросят а стрелки, как фейерверки.) Но суть категории — композиция. Или, если вам больше нравится, суть композиции — категория. Стрелки компонуются так, что если у вас есть стрелка от объекта А к объекту B, и еще одна стрелка из объекта B в C, то должна быть стрелка, — их композиция, — от А до С.
+35
Мир лицензий: разбираемся с GNU GPL
6 min
158KРано или поздно каждый разработчик сталкивается с вопросом лицензирования своих разработок. Более или менее понятно, когда разрабатывается коммерческий продукт с закрытым кодом. Но когда разработчик желает распространять программу, плагин или библиотеку классов бесплатно и с открытыми кодами, то могут возникнуть трудности, потому что в природе существует масса лицензий подобного рода. Эта статья призвана собрать, упорядочить данные по лицензиям и вычленить самое главное.
UPD: опубликован перевод небольшого куска официального GPL FAQ habrahabr.ru/blogs/Dura_Lex/45878
UPD2: скорректирован и переформулирован список совместимых лицензий
+148
Мир лицензий: Часто задаваемые вопросы про лицензии GNU GPL
5 min
17KTranslation
Недавно я написал статью под названием Мир лицензий: разбираемся с GNU GPL, в которой постарался осветить мир gpl-лицензий, историю и различия в версиях. Статья вызвала большой резонанс, возникло много вопросов, споров. Чтобы немного прояснить ситуацию с GPL, я решил перевести часть официального GPL FAQ. В нем затрагиваются многие вопросы и разъясняются некоторые позиции лицензии. Надеюсь, данный перевод несколько прояснит ситуацию с GPL.
В дальнейшем я продолжу цикл публикаций про лицензии описанием BSD, Apache, MIT и других свободных и не очень лицензий. Кроме того, постараюсь затронуть вопрос лицензий в нашей стране. А пока, предлагаю почитать данный перевод.
В дальнейшем я продолжу цикл публикаций про лицензии описанием BSD, Apache, MIT и других свободных и не очень лицензий. Кроме того, постараюсь затронуть вопрос лицензий в нашей стране. А пока, предлагаю почитать данный перевод.
+51
Ликбез: методы ресайза изображений
7 min
126KПочему изображение, масштабированное с бикубической интерполяцией, выглядит не как в Фотошопе. Почему одна программа ресайзит быстро, а другая — нет, хотя результат одинаковый. Какой метод ресайза лучше для увеличения, а какой для уменьшения. Что делают фильтры и чем они отличаются.
Вообще, это было вступлением к другой статье, но оно затянулось и вылилось в отдельный материал.
Этот человек сидит среди ромашек, чтобы привлечь ваше внимание к статье.
Вообще, это было вступлением к другой статье, но оно затянулось и вылилось в отдельный материал.
Этот человек сидит среди ромашек, чтобы привлечь ваше внимание к статье.
+87
Мой велосипед к reflection в c++
20 min
6.1KRecovery Mode
Вдохновившись публикацией «Logger с функциями-членами, которых нет», решил выдать на всеобщее обозрение свой мета-велосипед для рефлекшена, которым вполне успешно пользуюсь, и не только для логгирования. Но начнем всё же с простого логгирования, продолжая вышеупомянутую публикацию.
При реализации логгирования, задачи для себя были поставлены следующие:
Фронтенд выглядит так:
1. В конструкторе CConnection мы логгируем:
2. Где CConnection унаследован от
3.Который, используя CRTP, знает, что в CConnection есть такое:
4. И превращает эти данные в строчку лога:
Где через двоеточие перечислены: с — первый параметр шаблона TLogHeader, и далее значения m_id, m_name, m_state
В моем случае все это дальше пишется в rsyslog и там разбирается в соответствующие поля для MongoDB (в зависимости от типа заголовка, т.е. первый параметр до двоеточия).
Сейчас этот подход у меня в продакшене на высоконагруженной системе, так что любые конструктивные камни будут в пику, или лучше под кат. А если лень, то вот работающий пример на http://coliru.stacked-crooked.com/ т.к. под катом кода на 250 строк, но очень много букв в описании.
При реализации логгирования, задачи для себя были поставлены следующие:
- Решить задачу на «мета-уровне», чтобы быть отвязанным от конечной реализации
- Фронтенд апи для логгирования должен быть простым и прозрачным
- Иметь возможность выключать ненужные уровни логгирования на этапе компиляции одной константой; например: все что выше LOG_NOTICE не должно попасть в результирующий бинари
Фронтенд выглядит так:
1. В конструкторе CConnection мы логгируем:
TestLog::Log<LOG_NOTICE>() << *this << "connection created";
2. Где CConnection унаследован от
public TLogHeader<'c', CConnection>
3.Который, используя CRTP, знает, что в CConnection есть такое:
using this_t = CConnection;
int m_id; using m_id_t = TParamAccessor<this_t, decltype(this_t::m_id), &this_t::m_id>;
std::string m_name; using m_name_t = TParamAccessor<this_t, decltype(this_t::m_name), &this_t::m_name>;
char m_state; using m_state_t = TParamAccessor<this_t, decltype(this_t::m_state), &this_t::m_state>;
using log_header_param_list_t = std::tuple<m_id_t, m_name_t, m_state_t>;
4. И превращает эти данные в строчку лога:
c:23:test_conn 1:a:connection created
Где через двоеточие перечислены: с — первый параметр шаблона TLogHeader, и далее значения m_id, m_name, m_state
В моем случае все это дальше пишется в rsyslog и там разбирается в соответствующие поля для MongoDB (в зависимости от типа заголовка, т.е. первый параметр до двоеточия).
Сейчас этот подход у меня в продакшене на высоконагруженной системе, так что любые конструктивные камни будут в пику, или лучше под кат. А если лень, то вот работающий пример на http://coliru.stacked-crooked.com/ т.к. под катом кода на 250 строк, но очень много букв в описании.
0
Literal operator templates for strings
4 min
15KСтандарт C++11 привнес в язык такую вещь, как пользовательские литералы[1]. Конкретно — дюжину вариантов для определения оператора "", добавляющих небольшой синтаксический сахар, всех, за исключением одного — шаблонного варианта:
Отличается этот вариант тем, что он не просто дает альтернативный вариант вызова функции с помощью суффикса, а позволяет определить свои правила парсинга передаваемого аргумента на этапе компиляции, расширяя тем самым возможности компилятора.
Например:
Однако при разработке стандарта было допущено небольшое упущение — шаблонный вариант пользовательского литерала позволяет работать только с числовыми аргументами, несмотря на то, что парсинг их осуществляется посимвольно.
Такое упущение, конечно же, не могло остаться не замеченным, и на этапе согласования стандарта C++14 было предложено решение для строковых аргументов[2]
В скором времени было реализовано в компиляторах GCC[3] и clang (GNU extension). Однако в финальную редакцию стандарта C++14 так и не попало. Впрочем, не будем отчаиваться, есть надежда, что нас обрадует C++17. А пока посмотрим, как можно будет применять новый тип пользовательских литералов.
template <char...> type operator "" _op();
Отличается этот вариант тем, что он не просто дает альтернативный вариант вызова функции с помощью суффикса, а позволяет определить свои правила парсинга передаваемого аргумента на этапе компиляции, расширяя тем самым возможности компилятора.
Например:
auto x = 10001000100011001001001010001000_b;
Однако при разработке стандарта было допущено небольшое упущение — шаблонный вариант пользовательского литерала позволяет работать только с числовыми аргументами, несмотря на то, что парсинг их осуществляется посимвольно.
Такое упущение, конечно же, не могло остаться не замеченным, и на этапе согласования стандарта C++14 было предложено решение для строковых аргументов[2]
template <typename CharT, CharT ...String> type operator "" _op();
В скором времени было реализовано в компиляторах GCC[3] и clang (GNU extension). Однако в финальную редакцию стандарта C++14 так и не попало. Впрочем, не будем отчаиваться, есть надежда, что нас обрадует C++17. А пока посмотрим, как можно будет применять новый тип пользовательских литералов.
+12
Лицензия для вашего open-source проекта
98 min
185KВ этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.
Статья будет полезна тем, кто хочет:
— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
— подобрать свободную лицензию для своего проекта;
— разобраться, что нужно писать в шапке файла исходного кода.
Статья будет полезна тем, кто хочет:
— в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
— подобрать свободную лицензию для своего проекта;
— разобраться, что нужно писать в шапке файла исходного кода.
+128
Создаём свой загрузочный диск LiveCD Debian
4 min
75KРешил поделиться сим знанием. Всё это я сам собрал в интернете. Опробовал и удостоверился, что оно работает. Дам немного комментариев к этой инструкции, чтобы было понятнее.
Начну с того, что свой загрузочный cd диск хотел создать давно, но руки не доходили. Обычно я просто обходился дампом системы, если хотелось сделать копию рабочей. Но каждый раз делать всё руками — руки отсохнут. Тем более, что не каждому объяснишь как сделать копию системы, как разбить и отформатировать диск, сделать диск загрузочным. Не у всех, знаете ли, есть рабочий линукс под рукой. Ну вот руки то мои взмолились и надоело всё делать по шпаргалкам — детсад ей богу.
+3
Адреса памяти: физические, виртуальные, логические, линейные, эффективные, гостевые
6 min
109KTutorial
Мне периодически приходится объяснять разным людям некоторые аспекты архитектуры Intel® IA-32, в том числе замысловатость системы адресации данных в памяти, которая, похоже, реализовала почти все когда-то придуманные идеи. Я решил оформить развёрнутый ответ в этой статье. Надеюсь, что он будет полезен ещё кому-нибудь.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.
На рисунке — сегментация и страничное преобразование адреса, как они выглядели 27 лет назад. Иллюстрация из Intel 80386 Programmers's Reference Manual 1986 года. Забавно, что в описании рисунка есть аж две опечатки: «80306 Addressing Machanism». В наше время адрес подвергается более сложным преобразованиям, а иллюстрации больше не делают в псевдографике.
При исполнении машинных инструкций считываются и записываются данные, которые могут находиться в нескольких местах: в регистрах самого процессора, в виде констант, закодированных в инструкции, а также в оперативной памяти. Если данные находятся в памяти, то их положение определяется некоторым числом — адресом. По ряду причин, которые, я надеюсь, станут понятными в процессе чтения этой статьи, исходный адрес, закодированный в инструкции, проходит через несколько преобразований.
На рисунке — сегментация и страничное преобразование адреса, как они выглядели 27 лет назад. Иллюстрация из Intel 80386 Programmers's Reference Manual 1986 года. Забавно, что в описании рисунка есть аж две опечатки: «80306 Addressing Machanism». В наше время адрес подвергается более сложным преобразованиям, а иллюстрации больше не делают в псевдографике.
+47
Как создается Data Matrix?
4 min
57KData Matrix является двумерным матричным штрих кодом, состоящим из светлых и темных участков. С помощью такого штрих кода можно закодировать достаточно большой объем информации (2-3Кб). Часто Data Matrix применяется при маркировке небольших предметов, например микросхем, а также в пищевой, оборонной промышленности, рекламе и других сферах.
Существует множество сайтов для создания таких кодов, но мне всегда было интересно, каким же образом текст превращается в набор черных и белых квадратиков? Должен же быть какой-то алгоритм?
При создании Data Matrix нам понадобится обратиться к арифметике полей Галуа и кодам Рида-Соломона. Рассмотрим этот процесс на простом примере.
Существует множество сайтов для создания таких кодов, но мне всегда было интересно, каким же образом текст превращается в набор черных и белых квадратиков? Должен же быть какой-то алгоритм?
При создании Data Matrix нам понадобится обратиться к арифметике полей Галуа и кодам Рида-Соломона. Рассмотрим этот процесс на простом примере.
+46
Хороших книг пост
2 min
70KА давайте давайте соберём здесь хорошие книги, которые просто стоило собрать.
Суть в том, что просто давно стоило сложить хорошие книги в одном посте, чтобы было что прочитать в дороге — или просто для души.
+60
Pro Git, 2-е издание
1 min
68KВне всяких сомнений, Pro Git — это одна из лучших книг про систему контроля версий git. Совсем недавно появилось второе издание этой замечательной книжки. Большие изменения произошли в издательском процессе: исходный код книги теперь хранится в AsciiDoc, а не в Markdown, а различные форматы (PDF, ePub и Mobi) автоматически генерируются с помощью O'Reilly Atlas platform. Разработка книги активно ведётся на гитхабе, актуальная online-версия находится в открытом доступе на официальном сайте, а любители печатной продукции могут заказать себе экземпляр на Amazon. Второе издание получилось почти в два раза больше первого: на сегодняшний день PDF-версия содержит 570 страниц. Помимо улучшения старого материала, книжка также пополнилась новыми главами и разделами:
+84
Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»
8 min
38KПро неопределённое поведение писали не раз. Приводились цитаты из стандартов, объяснения их интерпретации, разного рода поучительные примеры, но, похоже, все люди, пытавшиеся об этом писать пропускали важный пункт: по-моему никто внятно так и не удосужился объяснить — откуда это понятие в языке, собственно, появилось, и, главное, кому оно адресовано.
Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».
Люди, которые знают что такое бензопила пытаются, конечно, объяснить, что за если за эту рукоятку дёрнуть, то так, в общем-то, и должно быть, но люди, считающие, что у них у руках такой себе молоток говорят «мимо» них, и, в результате, все остаются при своих.
Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».
Люди, которые знают что такое бензопила пытаются, конечно, объяснить, что за если за эту рукоятку дёрнуть, то так, в общем-то, и должно быть, но люди, считающие, что у них у руках такой себе молоток говорят «мимо» них, и, в результате, все остаются при своих.
+69
Теория и практика EFI Byte Code
5 min
13KВ конце 90-х компания Number Nine Visual Technology, тогдашний светоч дизайна видеокарт, предлагала на сайте VGA BIOS для своих PCI-устройств. Ничего примечательного в этом событии нет. Разве что, видеокарты Number Nine могли работать как на IBM PC-совместимых платформах, так и в MAC-системах, использующих Power PC. Поэтому одно и то же устройство комплектовалось различными файлами BIOS.
Скорее всего, тогда и не могло быть иначе. Как сейчас дело обстоит с поддержкой устройств, рассчитанных на работу в разных аппаратных средах? Ответ на этот вопрос дает спецификация UEFI, в рамках которой предлагается изящное решение – EFI Byte Code или EBC. С его помощью можно создавать кроссплатформенные приложения для firmware.
Скорее всего, тогда и не могло быть иначе. Как сейчас дело обстоит с поддержкой устройств, рассчитанных на работу в разных аппаратных средах? Ответ на этот вопрос дает спецификация UEFI, в рамках которой предлагается изящное решение – EFI Byte Code или EBC. С его помощью можно создавать кроссплатформенные приложения для firmware.
+11
30 лет компакт-диску
2 min
36KТридцать лет назад, 1 октября 1982 года, на прилавки магазинов впервые попал совершенно новый носитель информации — в музыкальных магазинах покупателям стал предлагаться шестой студийный альбом Билли Джоэла «52nd Street», который был записан на компакт-диске (CD). Выбор исполнителя и альбома для новинки был выбран отнюдь не случайно — в 1979 году альбом получил «Грэмми», а заглавная песня стала лучшей в номинации «Лучшее мужское исполнение поп-композиции».
История изобретения CD далека от однозначности. Его разработка была начата в недрах компании Philips в 1974 году с целью создания оптического носителя аудио-информации с качеством звука, превышающим качество виниловых пластинок, и диаметром в 20 см, причём новую разработку была вложена астрономическая по тем временам сумма в 60$ млн. Уже в 1979 году Philips сумела выпустить первый CD-плеер, но вскоре после его релиза компания начала искать контакты с другим лидером по производству электроники — японской компании Sony — с целью объединения усилий по развитию новой технологии аудиозаписи.
Тогдашний директор Philips Лу Оттенс полагал, что одного часа музыкальной записи на диске будет более чем достаточно. Однако, вице-президент Sony Норио Ога, учившийся музыке в Берлинской консерватории, настоял на том, чтобы общее время проигрывания CD должно быть таким, чтобы на диск помещались не только альбомы современных (1979 года) исполнителей, а и классические произведения. В итоге было достигнуто соглашение, что Девятая симфония Бетховена длительностью в 74 минуты, должна стать как раз эталоном длительности звуковой записи CD-диска, который стал известен как CD-DA (Compact Disk Digital Audio).
+41
Зачем исследовать космос? Письмо 1970 года монахине в Африку
10 min
58KTranslation
Эрнс Шталингер написал это письмо 6 мая 1970 года сестре Мэри Джаканд, монахине, которая работала среди голодающих детей города Кабве в африканской стране Замбии, в ответ на вопрос о значении освоения космоса. В то время доктор Шталингер был заместителем директора по науке в Центре Космических Полетов Маршалла, в Хэнтсвилле, штата Алабама. Тронутый искренностью и обеспокоенностью Мэри, он направил ей все свои искренние убеждения о ценности исследований космоса. Красноречивое заявление доктора актуально до сих пор, даже спустя четыре десятилетия. Родившись в Германии в 1913 году, доктор Шталингер получил Ph.D. по физике в университете Tuebingen 1936 году. Он был членом немецкой ракетной группы, в Peenemunde и приехал в Соединенные Штаты в 1946 работать на американскую армию в Форт Блисс, штат Техас. Он переехал в Хэнтсвилль в 1950 и продолжил работать для армейского Redstone Arsenal до тех пор пока не был создан центр космических полетов в 1960. Доктор Шталингер был неоднократно награжден и широко известен за свои исследования силовых установок. Он получил награду от министра обороны (Exceptional Civilian Service Award) за участие в запуске Эксплорера-1, первого американского космического спутника.
+220
Я — Бренд или как поднять свою ценность?
7 min
7.7KПосле написания поста об алгоритме IT собеседования, мы в комментариях обсуждали, что постоянно кому-то нужно что-то доказывать, выполнять глупые тестовые задания и т.д. Область, в которой мы работаем, растет и развивается очень быстро. Классические институты не успевают менять свои программы, да и преподаватели уже не в курсе происходящего.
Мы не можем просто по корочке авторитетного института принять специалиста, исключения разве что PMI, PMP, PM и т.д. сертификаты, которые могут сказать, что человек учился в авторитетной компании, которая входит в международную сеть руководителей проектов и гарантирует качественное образование и выдает сертификаты только тем, кто в полном объеме освоил все знания.
Я даже скажу больше, что такое едва ли появится в ближайшее десятилетие, а значит, нужно менять подход к самому себе. В данном посте я хочу высказать свою точку зрения по данной проблеме и очень рассчитываю начать большое конструктивное обсуждение возможных вариантов добавления себе ценности для работодателя.
Итак, всех заинтересованных — прошу под кат.
Мы не можем просто по корочке авторитетного института принять специалиста, исключения разве что PMI, PMP, PM и т.д. сертификаты, которые могут сказать, что человек учился в авторитетной компании, которая входит в международную сеть руководителей проектов и гарантирует качественное образование и выдает сертификаты только тем, кто в полном объеме освоил все знания.
Я даже скажу больше, что такое едва ли появится в ближайшее десятилетие, а значит, нужно менять подход к самому себе. В данном посте я хочу высказать свою точку зрения по данной проблеме и очень рассчитываю начать большое конструктивное обсуждение возможных вариантов добавления себе ценности для работодателя.
Итак, всех заинтересованных — прошу под кат.
+12
Information
- Rating
- Does not participate
- Registered
- Activity