LINUX.ORG.RU

Избранные сообщения le_legioner

книги по безопасному C, или за что браться после K&R

Форум — Development

Сабж.

Под K&R в данном случае имеется в виду The C Programming Language.

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

monsterkiller
()

Новый стандарт языка C: C18

Новости — Разработка
Группа Разработка

Международная Организация по Стандартизации (ISO) опубликовала новый международный стандарт языка программирования C: ISO/IEC 9899:2018, его также называют C17 и C18.

Новый стандарт не вносит никаких новых возможностей, а лишь исправляет дефекты, сообщенные для C11. Значение макроса __STDC_VERSION__ увеличено до 201710L.

Поддержка C18 у GCC появилась, начиная с 8 версии, а у LLVM Clang — с 6.0. Чтобы указать во время компиляции использование стандарта C18 у GCC и LLVM Clang используются флаги -std=c17 и -std=gnu17. В GCC можно также указать новый стандарт флагами -std=c18 и -std=gnu18.

Последний черновик стандарта

Статья на en.wikipedia.org

>>> Подробности

 , c18, ,

neon1ks
()

Тёмные углы C и C++

Форум — Development

Изначально даный пост предназначался для habrahabr, но местные модераторы его не пропустили без объяснения причин:

Увы, ваш топик «Тёмные углы C и C++» не был одобрен и не попал в общую ленту. Причин этому может быть много, но просим не терроризировать службу технической поддержки, так как там вашу статью даже не видели. Расстраиваться тоже не стоит - попробуйте опубликовать что-нибудь еще.

С уважением, Хабрахабр

В связи с этим выкладываю его сюда.

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

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

Думаю, вы со мной согласитесь, что C++ — язык с очень высоким порогом вхождения. Серьёзно! Я изучаю этот язык уже больше 3 лет, и практически каждую неделю открываю в нём что-то новое и удивительное. Именно об этом «новом и удивительном» и пойдёт речь в данной статье.

За то время, пока я изучал C++, у меня потихоньку накапливались интересные задачки, сниппеты и просто необычные куски кода, которыми я делился с коллегами по работе и знакомыми. У нас даже появилась своего рода традиция — каждый рабочий день с того момента, как я пришёл в компанию, я выкладывал по две новых задачки, которые мы старались по возможности обсудить в перерывах. Постепенно их набиралось всё больше и больше, пока, наконец, я не стал забывать некоторые из них. Именно в тот момент я решил предпринять попытку составления сборника так называемых «тёмных углов» C и C++. Я собрал воедино все те куски кода, что видел до сих пор, дополнил их цитатами из различных стандартов и продолжил копить свою «коллекцию». Изначально моей целью было собрать вместе всего 100 задачек, но я и оглянуться не успел, как их стало уже 200, 300 и вот теперь 400. На самом деле, их даже больше, но на данном этапе я решил ограничиться именно этим количеством.

Итак, представляю Вашему вниманию книгу «C and C++ Dark Corners». Конечно, назвать её книгой можно с натяжкой, ведь это, как я уже и сказал, сборник интересных и для кого-то малоизвестных мест C и С++.

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

В качестве примера приведу несколько вопросов из книги:

97. Что попадёт в stdout в результате выполнения след. кода и почему?

#include <iostream>
#include <memory>

#include <boost/smart_ptr/scoped_ptr.hpp>

class Foo
{
public:
 ~Foo() { std::cout << "Foo::~Foo() \n"; }
};

class Bar : public Foo
{
public:
 ~Bar() { std::cout << "Bar::~Bar() \n"; }
};

class Baz : public Bar
{
public:
 ~Baz() { std::cout << "Baz::~Baz() \n"; }
};

int main()
{
 std::cout << 1 << '\n';
 {
  Foo* instance = new Baz;
  delete instance;
 }

 std::cout << 2 << '\n';
 {
  std::shared_ptr<Foo> instance(new Baz);
 }

 std::cout << 3 << '\n';
 {
  std::shared_ptr<Foo> instance(false ? new Bar : new Baz);
 }

 std::cout << 4 << '\n';
 {
  boost::scoped_ptr<Foo> instance(new Baz);
 }

 std::cout << 5 << '\n';
 {
  std::unique_ptr<Foo> instance(new Baz);
 }

 std::cout << 6 << '\n';
 {
  std::auto_ptr<Foo> instance(new Baz);
 }
}

A: Первый случай уже обсуждался ранее – здесь UB в чистом виде (как правило, это приводит к тому, что не будет вызван деструктор производного класса).

Второй случай выдаст на экран следующее:

Baz::~Baz()

Bar::~Bar()

Foo::~Foo()

Почему? Что произошло? Ведь мы же ясно видим, что деструкторы у данных классов не являются виртуальными. Или это один из частных случаев UB? На самом деле, тут всё вполне законно и должно работать так, как указано выше. Посмотрим в документацию к std::shared_ptr и boost::shared_ptr:

http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr

Proper delete expression corresponding to the supplied type is always selected, this is the reason why the constructors are implemented as templates using a separate parameter Y.

http://www.boost.org/doc/libs/1_51_0/libs/smart_ptr/shared_ptr.htm

This constructor has been changed to a template in order to remember the actual pointer type passed. The destructor will call delete with the same pointer, complete with its original type, even when T does not have a virtual destructor, or is void.

Третий случай выдаст:

Bar::~Bar() Foo::~Foo()

Почему? Ведь мы только что обсуждали поведение std::shared_ptr! Что тут не так? Вспомните поведение тернарного оператора в C++ — он требует, чтобы второй и третий его операнды были одинакового типа. Более того, каст от базового к производному касту без лишних действий не выполнить, в отличие от обратной ситуации:

#include <iostream>

class Base
{
};

class Derived : public Base
{
};

int main()
{
 Base* first;
 Derived* second;

 Base* foo = second; // Ok
 Derived* bar = first; // Error: invalid conversion from 'Base*' to 'Derived*'
}

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

#include <iostream>
#include <typeinfo>

template <typename T, typename U>
auto foo(bool b, T t, U u)-> decltype(b ? t : u)
{
 return b ? t : u;
}

int main()
{
 auto _1 = foo(true, 0, 'c');
 std::cout << typeid(_1).name() << '\n';
 auto _2 = foo(false, 0, 'c');
 std::cout << typeid(_2).name() << '\n';
}

Переменные _1 и _2 будут одного и того же типа – int.

Именно поэтому Baz в данном случае будет приведён к Bar.

4, 5 и 6 случаи ничем не отличаются от первого – здесь UB. Надо помнить, что поведение std::shared_ptr отличается от остальных умных указателей.

43. Зачем может понадобиться писать так

#define DO_JOIN(FOO, BAR) DO_JOIN1(FOO, BAR)
#define DO_JOIN1(FOO, BAR) FOO##BAR

вместо

#define DO_JOIN(FOO, BAR) FOO##BAR

A: Потому что препроцессор отработает конкатенацию не так, как того ожидал программист, в том случае, если в качестве аргумента(-ов) мы передадим в макрос DO_JOIN другой макрос:

#include <iostream>

#define DO_JOIN(FOO, BAR) DO_JOIN1(FOO, BAR)
#define DO_JOIN1(FOO, BAR) FOO##BAR

#define MY_MACRO 5

int main()
{
 std::cout << DO_JOIN(1, MY_MACRO) << '\n';
}

Output:

15

#include <iostream>

#define DO_JOIN(FOO, BAR) FOO##BAR

#define MY_MACRO 5

int main()
{
 std::cout << DO_JOIN(1, MY_MACRO) << '\n';
}

error: unable to find numeric literal operator 'operator"" MY_MACRO'

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

ISO/IEC 14882:2011

16.3.1 Argument substitution [cpp.subst]

1 After the arguments for the invocation of a function-like macro have been identified, argument substitution takes place. A parameter in the replacement list, unless preceded by a # or ## preprocessing token or followed by a ## preprocessing token (see below), is replaced by the corresponding argument after all macros contained therein have been expanded. Before being substituted, each argument’s preprocessing tokens are completely macro replaced as if they formed the rest of the preprocessing file; no other preprocessing tokens are available.

44. Что попадёт в stdout в результате выполнения след. кода?

#include <iostream>
#include <stdexcept>

struct Foo
{
 Foo() { std::cout << "Foo::Foo()" << std::endl; }
 ~Foo () { std::cout << "Foo::~Foo()" << std::endl; }
};

void foo()
{
 Foo bar;
 throw std::runtime_error("Error");
}

int main ()
{
 foo();
}

A: Зависит от реализации.

// 1

Foo::Foo()

// 2

Foo::Foo() Foo::~Foo()

ISO/IEC 14882:2011

15.3 Handling an exception [except.handle]

9 If no matching handler is found, the function std::terminate() is called; whether or not the stack is unwound before this call to std::terminate() is implementation-defined (15.5.1).

Например, в документации к gcc сказано, что раскрутки стека не произойдёт:

The stack is not unwound before std::terminate is called.

Сборник выкладывается на бесплатной основе, желающим помочь каким угодно образом буду безумно признателен и благодарен. По любым вопросам, рекомендациям и пожеланиям Вы можете обращаться на мой электронный ящик nikita.trophimov@gmail.com. Буду рад услышать абсолютно любое мнение по данному поводу.

В книге ещё много чего можно и даже нужно дорабатывать. Обещаю, что если сообщество проявит хоть какой-то интерес к данному проекту, я продолжу развивать его согласно Вашим предпочтениям и пожеланиям, дополнять новыми задачками и исправлять ошибки. У меня есть много мыслей по поводу улучшения «C and C++ Dark Corners» — среди них добавление тематических разделов, workaround'ы для различных компиляторов и т.д. Главное, чтобы этот интерес был не только с моей стороны.

Жду Ваших положительных и отрицательных отзывов, рекомендаций и, конечно, новых задачек.

Внимательно ознакомьтесь с тем, что указано во «введении», и приятного чтения!

 ,

NikitaTrophimov
()

ProtonVPN выпустил консольный клиент для Linux

Новости — Open Source
Группа Open Source

Разработчики сервисов защищенной почты Protonmail и ProtonVPN выпустили открытый консольный клиент ProtonVPN для Linux. Эта небольшая, но полезная программка позволяет контролировать VPN-соединения в любом Linux-дистрибутиве.

В ближайшее время клиент пройдет многочисленные тесты во всех современных Linux-дистрибутивах. Из наиболее востребованных функций в CLI обещают добавить killswitch, который должен работать одинаково хорошо и стабильно во всех дистрибутивах. Багрепорты и любой фидбек крайне приветствуются.

P.S. Постепенно в roadmap планируется и полноценный GUI-клиент для Linux, но пока идет активное развитие и тестирование CLI.

Reddit ProtonVPN: https://www.reddit.com/r/ProtonVPN/

Ссылка на GitHub: https://github.com/ProtonVPN/protonvpn-cli

Настройка клиента: https://protonvpn.com/support/linux-vpn-tool/

>>> Новость в блоге:

 , , , ,

anonymous
()

Материалы для экспресс-курса по C++

Форум — Development

Товарищи, братья, друзья, господа!

Нужны какие-нибудь материалы для экспресс-подготовки студентов по программированию на C++ (специальность студентов имеет довольно малое отношение к тому, что обычно называют IT). Кнута и прочих «корифеев» не предлагать, нужен курс по современному стандарту (C++14 и позже), минимум «глубины», максимум полезных практических знаний и best practices. Если это важно, то направленность — численное моделирование физических задач.

 ,

Sahas
()

Документация к языкам программирования

Форум — Development

Всевозможные учебники и книги - это хорошо, но обычно их предлагают купить и часто не совсем дёшево, даже если они описывают базовый уровень. Бесплатным решением, очевидно, является официальная документация. Когда я открыл документацию к python, я был приятно удивлён, что она написана практически как учебник. Для Java вроде бы тоже всё относительно неплохо в этом плане, хотя хотелось бы отдельный оффлайновый pdf.

Мне захотелось скачать себе документацию в подобном виде для C и C++. Зашёл на их официальные сайты, там описание стандарта предлагают получить на сайте ISO за немалые суммы денег. Да и само описание стандарта далеко не для обучения. Хорошо, подумал я, попробую тогда посмотреть документацию к одной из реализаций языка - GCC-CPP, и вижу, что описанное там тоже вовсе не подходит для обучения. Даже описания типов и примеров объявления нет (может плохо искал, но в заголовках не заметил).

Нет, это не тред «подскажите книгу по Сям», таких для начинающих я и сам могу гору насоветовать.

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


Update

C, C++
Online-ресурсы и учебные пособия для начинающих:

Как дополнение: Рабочая версия стандарта C++14 от 19 ноября 2014 г. (с официального сайта стандарта)


Fortran


Python
В дополнение к официальной документациипереводу руководства Python 3.1):


Object Pascal. Lazarus

Перемещено Klymedy из talks

 , , , ,

grem
()

Вышла книга «tmux: продуктивная разработка без мыши»

Новости — Документация
Группа Документация

О книге:
Для современного разработчика обычное дело иметь запущенными одновременно консоль базы данных, веб-сервер и текстовый редактор. Переключение между ними с помощью мыши занимает драгоценное время и нарушает концентрацию. При использовании tmux возможно повысить продуктивность и вернуть внимание. Эта книга покажет вам, как.

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

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

Вам понадобится:
Компьютер с установленной Mac или GNU/Linux и некоторый опыт использования shell-команд.

Об авторе:
Брайан Хоган — автор, редактор, инструктор и веб-разработчик, который профессионально создает веб-сайты с 1995 года как фрилансер и консультант. Его недавние книги включают HTML5, CSS3 и рецепты веб-разработки. Он преподает и пишет о технологиях, особенно о веб-дизайне, доступности и разработке.

Стоимость книги составляет $11 за электронную версию и $16.25 за бумажную.

>>> Подробности/Купить

 ,

april
()

Qt(c++) для новичка

Форум — Development

Здраствуйте гуру ЛОРа :)

Ситуация такая, изучал сначало delphi, потом перешел на python(PyQt) из-за хорошего синтаксиса, но понял что очень уж он тормознут(не в обиду любителям питона, я сам до сих пор любитель).
Соответственно решил перейти на C++, точнее QT. Который сейчас востребован на всех платформах(Win, Lin, sailfish и ubuntu(мобильная)

Прошу помощи в освоении как языка(синтаксиса) C++ так и библиотеки Qt. Посоветовать толковые учебники и интернет ресурсы.

 , ,

vladcraft
()

Написание свободной(Free as in Freedom) книги-самоучителя по программированию: планы, цели, задачи

Форум — Development

Итак, я решил написать(или как вариант, собрать из кусочков) книгу-самоучилель по программированию, в которой бы не было глупых и нелепых ограничений на распространение. Однако копилефт я все же считаю приемлемым в данном случае. Общественным достоянием это не будет т.к. вполне могут найтись желающие использовать результат в своих проприетарных книгах, а проприетарные книги — плохо. Лицензия самого текста книги-учебника будет или Creative Commons Attribution-ShareAlike (что позволит без каких-либо проблем переиспользовать текст из википедии) или что-то вроде GNU Free Documentation License (без неизменяемых разделов естественно).

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

Теперь к теме того, на кого книга ориентирована, какие начальные знания предполагаются, чему книга будет учить, какой первый ЯП взять и каков будет авторский самысел: С этим моментом я пока что не определился окончательно, и тут есть что обсудить. В частности, я не вижу особого смысла объяснять какие-то базовые понятия комбинаторики, об этом можно доступным языком прочитать из школьных учебников. Системы счисления(СС), перевод из одной СС в другую - вот это еще можно. One's и two's complement представления знаковых чисел — про это тоже можно написать. Если же человек не понимает комбинаторику, он ее быстро поймет на примере кода, который будет достаточно наглядно это показывать, и который всенепременно будет.
Пока что в качестве первого языка я склоняюсь к Си, и тому есть причины. Все прочие распространенные языки (кроме ассемблера, хотя его трудно назвать распространенным) не настолько близки к аппаратному уровню. Про нужность понимания на низком уровне написано тут http://russian.joelonsoftware.com/Articles/BacktoBasics.html https://habrahabr.ru/company/piter/blog/271347/ , не вижу смысла повторяться. Приведу лишь цитату:

«Просто плохой воркшоп попался», — скажете вы. Но на этом примере я хочу подчеркнуть более масштабную проблему: не изучив для начала C, программист оказывается лишен необходимых орудий, позволяющих понять, что именно происходит в используемой системе. Если вы — умный и пытливый питонщик, то вскоре докопаетесь до плотных пород языка C. Под этими горизонтами, скажут вам, «бойся драконов, костей и отладчиков». Соответственно, если вы не будете достаточно отважны и не проигнорируете предупреждений «да не берись ты за этот C», вы никогда не исследуете глубин, на которые можно забраться просто из любопытства.

Притом еще один важный момент: Си будет изучаться параллельно с ассемблером. Если речь идет об изучении ассемблера, необходимо четко зафиксировать то, на какой архитектуре это все происходит и в какой ОС. Так вот, ОС будет GNU/Linux а архитектура x86-64. Будут постоянно проводиться параллели между тем, что из себя представляет код на Си в текстовом виде, и тем, в какой текст на ассемблере его превращает компилятор. В связи с этим, первым делом будет рассказано о goto и конструкции if(условие) goto метка;. Про конструкции вида

if(условие)
{
  что-то_делаем;
}
else
{
  что-то_другое_делаем;
}
Будет рассказано немного позже, притом это будет рассказано и словами, и через написание эквивалентного кода через if(условие) goto метка;. Циклы, for(){} while{}, do{}while(), конструкция switch-case и break continue внутри них будут так же объясняться через все тот же if(условие) goto метка; притом будет делаться явный акцент на том, что намного лучше использовать нормальные циклы, чем лепить всюду этот условный goto. Кроме того, будет так же рассказано про Labels as Values. Почему так важна эта странная штука, if(условие) goto метка;? Потому что она имеет наипрямейшее отношение к тому, как работают ЭВМ, а всякие циклы СКРЫВАЮТ это. Рекурсия в Си будет объясняться только после того, как будет объяснено, что такое стекфрейм и соглашения вызова, будет сказано про оптимизацию хвостовой рекурсии, и о проблеме забивания стека, если такая оптимизация не происходит, притом это будет наглядно показано в ассемблере. Учиться отлаживать код надо будет тоже «с пеленок», притом отлаживать и ассемблер, и всякие там Си. Будет и про асм-вставки в Си, clobber list. В качестве ассемблера будет рассматриваться GAS, а никакой не NASM т.к. GCC умеет выплевывать ассемблер именно в GAS синтаксисе. Насчет выбора Intel или AT&T синтаксиса - тут я склонюсь пожалуй к тому, что надо ЗНАТЬ И УМЕТЬ ПОНИМАТЬ ОБА. Кроме того, GAS давно уже умеет в оба синтаксиса, так что проблем с этим не будет. Единственная проблема с GAS в том, что это однопроходной ассемблер, так что можно освоить и какой-нибудь NASM, YASM.

Первые хеллоуворды будут написаны вообще в особом стиле, без использования printf() и вообще без библиотеки Си; Будут использованы куски на ассемблере, которые делают системный вызов write и read, и с ними можно(нужно) будет линковаться, чтоб что-то вывести на экран. Будет рассказано и про printf естественно, но только когда будет совершенно четко ясно, что такое вообще va_list. Будет куча отсылок к драфту стандарта Си (недрафт почему-то платный). Будет так же рассказано про устройство ОС. В конце скорее всего будет дано задание сделать свою игрушечную ОС так что предполагается что человек к тому моменту должен уже отлично понимать всякие там связные списки, графы, очереди, спинлоки-аллокаторы свои уметь делать на асме при желании. Алгоритмы сортировки, обхода графов, хеш-таблицы, все это будет объяснено на языке Си, и плюсов вообще касаться я не буду.

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

Кроме того, после моей книги предполагается, что человек должен уметь заниматься такими ненужными (в GNU/Linux) на первый взгляд вещами, как крякинг, реверсинг, исправление ошибок в бинарниках, не обладая исходным текстом. Восстановление логики работы программы по дизасму. Ну и программирование в машинных кодах (без ассемблера, одним HEX редактором).

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

cast ASM be_nt_all mister_VA

UPD: Программирование и отладка на C/ASM - Первые программы. Знакомство с C и ассемблером. Компиляция, линковка, код возврата. Вывод текста.

 , , ,

SZT
()

Книга для начинающих программистов, ориентированная на Linux

Новости — Документация
Группа Документация

На сайте А.В.Столярова продолжается сбор средств на написание и последующее издание книги «Программирование: введение в профессию».

Автор проекта уже известен публике по своим книгам Программирование на языке ассемблера NASM для ОС Unix, Сверстай диплом красиво: LaTeX за три дня и другими. Электронные версии всех своих книг автор сразу после выхода бумажного издания выкладывает на сайт, считая это принципиальной позицией.

Книга, задуманная Столяровым в этот раз, должна стать руководством для начинающих, ориентированным на *nix-системы (с использованием командной строки в качестве основополагающего принципа при обучении) и покрывающим при этом предмет от нулевого уровня (школьной информатики) до ООП и парадигм программирования; структура книги приблизительно соответствует последовательности программистских курсов на факультете ВМК МГУ, но отличается от программы ВМК наличием общей платформы (*nix), полным исключением заведомо мёртвых инструментов вроде всё ещё применяющихся на ВМК Турбо-Паскаля и ассемблера MASM для MSDOS, а также существенно иначе расставленными акцентами. Примерный план книги представлен здесь, а с оглавлением неоконченной рукописи, уже включающей три части из предполагающихся семи или восьми — здесь.

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

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

Даже без дополнительных глав ожидаемый объём книги составляет порядка 1000 страниц; автор планирует уложиться в 500 рабочих часов, для выделения которых необходимо на некоторое время отказаться от подработок. Кроме того, издание книги в бумаге потребует серьёзных расходов, а сотрудничество с издателями на их условиях означало бы невозможность распространения (по крайней мере, открытого) её электронной версии. Автор предпочёл объявить о сборе средств.

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

>>> Подробности

 , ,

Croco
()

Ищу хороший учебник по C для нубов

Форум — Development

Сабж. Уровень знания C на «int main() { return 0; }».

Желательно ещё линк.

 ,

Paused
()

Поиск работы за еду для повышения квалификации

Форум — Development

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

Для уменьшения трафика:

  1. Соискателям: указывайте что умеете и чем хотите заняться
  2. «проектным менеджерам»: что за проект, на чём написано и что требуется допилить.

Так же убедитесь что в профиле есть все нужные контакты.

Сайты по поиску волонтёров

  • https://openhatch.org/search/ — закрытие багов за плюсик в карму (к сожалению, возможности отфильтровать результаты поиска очень слабые)
  • https://freedomsponsors.org — здесь можно получить денежку за улучшение свободного софта (например, за реализацию предложенных фич).
  • http://www.x.org/wiki/XorgEVoC/ — аналог GSoC от X.org, не привязан ко времени года, могут брать участие даже не студенты (в таком случае они свои $5000 не получат)

За ссылки спасибо yurikoles

 

true_admin
()

Базовый курс Linux (2009/RUS)

Форум — Talks

Автор: Коноплев Е.
Год выпуска: 2009
Видео кодек: flash
Релиз:КубаньМедиа

Список файлов на диске:
Linux CD1/AutoPlay/Audio/Click1.ogg   3.78 kB
Linux CD1/AutoPlay/Audio/High1.ogg   3.74 kB
Linux CD1/AutoPlay/Docs/4_2.exe   28.10 MB
Linux CD1/AutoPlay/Docs/4_3.exe   18.35 MB
Linux CD1/AutoPlay/Docs/4.exe   17.68 MB
Linux CD1/AutoPlay/Docs/3.exe   11.99 MB
Linux CD1/AutoPlay/Docs/2.exe   10.46 MB
Linux CD1/AutoPlay/Docs/1.exe   5.83 MB
Linux CD1/AutoPlay/Images/72aac1cc-3964-4903-adb0-35ba7b50955b.bmp   922.90 kB
Linux CD1/AutoPlay/autorun.cdd   205.93 kB
Linux CD1/autorun.exe   2.49 MB
Linux CD2/AutoPlay/Audio/Click1.ogg   3.78 kB
Linux CD2/AutoPlay/Audio/High1.ogg   3.74 kB
Linux CD2/AutoPlay/Docs/5.exe   29.95 MB
Linux CD2/AutoPlay/Docs/7.exe   24.09 MB
Linux CD2/AutoPlay/Docs/8.exe   21.86 MB
Linux CD2/AutoPlay/Docs/6.exe   18.73 MB
Linux CD2/AutoPlay/Docs/9.exe   16.77 MB
Linux CD2/AutoPlay/Images/72aac1cc-3964-4903-adb0-35ba7b50955b.bmp   922.90 kB
Linux CD2/AutoPlay/autorun.cdd   205.90 kB
Linux CD2/autorun.exe   2.49 MB
Linux CD3/AutoPlay/Audio/Click1.ogg   3.78 kB
Linux CD3/AutoPlay/Audio/High1.ogg   3.74 kB
Linux CD3/AutoPlay/Docs/10.exe   23.44 MB
Linux CD3/AutoPlay/Docs/15.exe   19.30 MB
Linux CD3/AutoPlay/Docs/14.exe   18.64 MB
Linux CD3/AutoPlay/Docs/13.exe   17.07 MB
Linux CD3/AutoPlay/Docs/12.exe   11.99 MB
Linux CD3/AutoPlay/Docs/11.exe   9.44 MB
Linux CD3/AutoPlay/Docs/16.exe   4.17 MB
Linux CD3/AutoPlay/Images/72aac1cc-3964-4903-adb0-35ba7b50955b.bmp   922.90 kB
Linux CD3/AutoPlay/autorun.cdd   205.99 kB
Linux CD3/autorun.exe   2.49 MB

abraziv_whiskey
()

Касперский и его OS для автомобилей/заводов/станков/роутеров etc.

Форум — Talks

http://izvestia.ru/news/602333

для Ъ: Касперский делает свою ОС для машин тк остальные ОС типа очень уязвимы и их ни в коем случае нельзя использовать в машинах/заводах/роутерах.

И уже есть даже марки которые катают его (ПО? ОС?) у себя на борту, какие именно он конечно же не сказал.

Как вам очередное ненужно?

 , , ,

VictimOfLoveToLinux
()

Лаборатория Касперского разработала собственную операционную систему

Форум — Talks

Это вам не Денис Попов с нескучными обоями. Они утверждают, что всё «с нуля».

«Лаборатория Касперского» завершила разработку безопасной операционной системы KasperskyOS, предназначенной для использования в критически важных инфраструктурах и устройствах. Решение будет поставляться в качестве предустановленного программного обеспечения на различных типах оборудования, применяемого в индустриальных и корпоративных сетях. В настоящее время безопасная ОС «Лаборатории Касперского» внедрена в маршрутизирующий коммутатор уровня L3, разработанный компанией Kraftway. Маршрутизатор, ставший первым полностью доверенным телекоммуникационным комплексом, обеспечивает полную конфиденциальность трафика и уже доступен на российском рынке.

«Лаборатория Касперского» разрабатывала безопасную операционную систему с нуля. В силу своей архитектуры и предназначения KasperskyOS гарантирует высокий уровень информационной безопасности. Основной принцип работы безопасной ОС сводится к правилу «запрещено все, что не разрешено». Это помогает исключить возможность эксплуатирования как уже известных уязвимостей, так и тех, что будут обнаружены в будущем. При этом система крайне гибкая, и все политики безопасности, в том числе запреты на выполнение определенных процессов и действий, настраиваются в соответствии с потребностями организации.

Продолжение маркетингового потока по ссылке: http://www.kaspersky.ru/about/news/business/2016/KasperskyOS

Подробностей не знаю, просто разместил объяву.

Кто в курсе, что это такое, и зачем нужно? Хорошее начинание? Судя по поиску, они даже искали здесь разработчиков. Может нашли и кто-то знает более детально?

 , , , ,

another
()

Разработчики Remix OS 2.0 опубликовали исходные коды системы для соответствия лицензиям GPL и Apache

Новости — Android
Группа Android

Сборка Android Remix OS 2.0, которая создана на базе Android x86, наделала шуму не только своим функционалом, интерфейсом и общим позиционированием, но также довольно странным пользовательским соглашением и нарушением лицензий Apache и GPL.

По последним распространяется свободное ПО, которым Remix OS 2.0 по сути и является, но разработчики во время релиза системы не опубликовали ее исходный код.

Разработчики из Jide довольно быстро отреагировали на ситуацию и опубликовали часть исходного кода Remix OS 2.0.

>>> Подробности

 , , jide,

Unununij
()

Microsoft создала родной слой эмуляции вызовов POSIX в Windows 10

Новости — Проприетарное ПО
Группа Проприетарное ПО

В ближайшие дни Microsoft представит совместную с Ubuntu разработку для ОС Windows 10, которая позволяет запускать немодифицированные (пока только консольные) бинарные файлы в Windows. Суть новинки заключается в трансляции системных вызовов Linux/POSIX в вызовы Win32 API, что позволяет достичь практически родной скорости выполнения Linux-приложений в среде Windows. Если не вдаваться в тонкости, то разработчики из Microsoft написали Wine наоборот.

Некоторые детали реализации:

( читать дальше... )

>>> Подробности

 , , , ,

birdie
()

Начало тестирования openSUSE Leap 42.1

Новости — Novell
Группа Novell

Следующий релиз openSUSE вошёл в стадию разработки. openSUSE Leap 42.1 Milestone 1 предназначен для альфа-тестировщиков. Согласно планам разработчиков, openSUSE Leap 42.1 будет базироваться на основных компонентах SUSE Linux Enterprise, но при этом предоставлять пользователю более свежие версии программного обеспечения.

Richard Brown:

“This is where the excitement for Leap begins. The opportunity for topping this SLE core with the things you want in a long-term release really makes this attractive and I see people wanting to get involved with this next chapter of openSUSE.”

Согласно его же заверениям, openSUSE Leap будет держать «золотую середину» между долговечностью SLE core и новизной и инновациями Tumbleweed.

На данный момент openSUSE Leap 42.1 Milestone 1 включает в себя LTS-ядро 4.1 с улучшенной поддержкой шифрования Ext4, улучшенным управлением питания для ARM и x86. Согласно заверениям разработчиков, новое ядро практически безупречно и содержит лишь несущественные недостатки. Обновления драйверов и более существенные улучшения ожидаются в Milestone 2.

Также в новом релизе вас уже ожидают GNOME 3.16, KDE Plasma 5, Firefox 38 и ещё много интересного.

На данный момент образов LiveCD нет, но они появятся позже.

Приятного тестирования!

>>> openSUSE releases first milestone for Leap

 

IceWindDale
()

Команда KDE работает над созданием среды для запуска приложений Android в GNU/Linux

Новости — KDE
Группа KDE

С помощью Shashlik, моделируемый среды Android, станет возможным запуск приложений последнего в системах на базе GNU/Linux. Shashlik будет включать в себя минимально возможный набор фреймфорков и подсистем Android, а также будет включать максимально возможный набор свободных компонентов. Шашлык создан для интеграции с существующей системой, вне зависимости от того, десктоп ли это, ноутбук или даже смартфон или телевизор.

Первая публичная презентация проекта пройдёт в рамках Akademy 2015 26 июля 2015 года. На 30-минутной презентации состоится первый релиз, с которым можно будет «поиграться» и посмотреть, как работают приложения Android на plasma-десктопах.

>>> Подробности

 ,

sudopacman
()

Firefox 39

Новости — Mozilla
Группа Mozilla

Доступен Firefox 39:

  • Возможность делиться ссылками на чаты Hello в социальных сетях
  • В Linux и OS X хэши всех загружаемых файлов отправляются в Google для сверки с вредоносными (отключается через browser.safebrowsing.downloads.enabled и browser.safebrowsing.downloads.remote.enabled); в список проверяемых добавлены форматы файлов OS X (1138721)
  • Различные цвета кожи у смайлов (Unicode 8.0)
  • Прекращена поддержка SSL 3.0 (1106470)
  • Отключена поддержка RC4 (за исключением сайтов из белого списка, которые без неё не работают)
  • Веб-сокеты могут соединяться с локальным хостом даже в оффлайн-режиме (967792)
  • Улучшена производительность при переключении с IPv6 на IPv4
  • Закрыт древний баг: неудавшиеся загрузки больше не помечаются, как успешные (237623)
  • Индикатор безопасности веб-страниц теперь игнорирует загрузки, вызванные предыдущими страницами
  • Исправлена ошибка, из-за которой могло не открываться окно чата Hello
  • Поддержка шрифтов WOFF2 (1084026)
  • Исправлена регрессия, приводившая к исчезновению Flash-контента
  • Библиотеки NSS обновлены до версии 3.19.2
  • Исправлены уязвимости
  • Плавная анимация и скроллинг в OS X; ускорена отрисовка пунктирных линий (1123019)

( Полный список изменений )

>>> Подробности

 ,

anonymous
()