Вернуться   Биткоин Форум > Сервисы
12 мая 2013, 4:16:36 PM   # 1
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я рассматриваю предложить наставничества для тех, кто желает получить в попытке понять глубину языка программирования C ++, его стандартной библиотеки, и некоторые из наиболее полезных моделей и идиомы.

Области, которые я имею в виду покрытие (с подробным исходным кодом все будут доступны в проекте CIYAM Open) включают в себя следующее:

Использование исключений
Написания переносимого кода
Тип безопасности и преимущества Compilation
Динамическое диспетчерские и Shared / Динамические библиотеки
Интеллектуальные указатели и использование объектов контекстных
Рекурсивный спуск и LL-парсеры
Многопоточность Руководство (особенно по отношению к выполнению кодирования DB)
Блокировка и управление ресурсами
Процедурные, объектно-ориентированное, Generic, функциональный и Template Мета программирование
Розетки и основные Интернет-протоколы
Трассировка и отладка (без использования отладчика)

У меня есть более 15 лет профессионального программирования C ++ и разработали полный веб-платформу, которая встроена в C ++ (возможно, единственный в своем роде). Я сделал много работы во всех вышеперечисленных областях (которые на самом деле все включены в CIYAM платформе) и используются, чтобы быть достаточно активными в comp.lang.c ++. Замедлитель лет назад (до около 2002 г.).

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

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

(Добро пожаловать в личку мне для дальнейшего ОБСУЖДЕНИЯ)


Ура,

Ян.
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM


Как заработать Биткоины?
Без вложений. Не майнинг.


12 мая 2013, 5:37:10 PM   # 2
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Получил 1806 Биткоинов
Реальная история.





Для тех, кто просто заинтересован в получении Живой OS, чтобы иметь возможность компилировать Bitcoin, пожалуйста, проверьте https://github.com/ciyam/safe (Версия Bitcoin включена не последний, но если люди заинтересованы в этом, то я буду это исправить).

Дистрибутив также включает в себя различные инструменты для возможности подписать в автономном режиме ОГО, что не требует автономного компьютера, чтобы иметь blockchain (и делает передачу информации с помощью QR-кодов, чтобы быть 100% "воздушно-гэп").
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

17 июля 2013, 12:33:27 PM   # 3
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Ну у меня было несколько вечера, но думал, что я мог бы просто начать здесь с очень простыми основами и, в частности, чтобы показать, как C ++ * очень отличается * в C.

Начнем с одного из самых простых программ, которые любой программист будет знать, и это, конечно, "Привет мир":

Код:
#включают 

используя патезрас;

Int основных ()
{
   соиЬ << "Привет мир!" << епсИ;
}

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

Во-первых, "стандартный заголовок" файлы в C ++ не имеют расширение файла - так #include iostream вы используете не , Если вы задаетесь вопросом, почему - причина в том, что, к сожалению, до того C ++ стал "нормированный" были фактически различные расширения для файлов заголовков, используемых различными производителями (например, .hpp или даже .hxx вместо .h) так опуская расширение файла стал "стандарт" чтобы сделать вещи проще для поставщиков компиляторов и на самом деле лучше читать в любом случае (кто заботится, что расширение файла, когда это "стандарт" заголовок?).

Следующая вещь, что C программист может смущать является "используя патезрасе" заявление. Что на земле это? Ну проблема, которая возникла из С и развитие библиотек с их необходимыми # включают для использования был один из "имя конфликтов", Так что, если я с помощью "red_widget" библиотека и "blue_widget" Библиотека Я мог бы в конечном итоге с ситуацией, что я имел функцию под названием "destroy_widgets" в * каждый * библиотека делает невозможным включение обоих заголовков (и, в частности, назвать одну или другую функцию), не прибегая к противным "препроцессор" трюки.

С ++ решает эту проблему, позволяя функции (а также классы и даже объектов), которые будут размещены в "Пространство имен" (Они могут быть вложены также) таким образом, что тогда при условии, что вы поместите ваш "red_widget" Библиотека в "красный" Пространство имен и ваш "blue_widget" Библиотека в "синий" Пространство имен можно избежать таких неясностей, которые невозможно избежать в C (и даже созвонимся явно с помощью красных :: destroy_widgets и синего :: destroy_widgets).

Так без "используя патезрасе" вам нужно будет использовать станд :: соиЬ и станд :: епсИ в приведенном выше коде (как и "соиЬ" а также "епсИ" относятся к "станд" Пространство имен). Хотя не считается хорошей практикой положить "использование пространств имен" в заголовочном файле это вполне приемлемо в исходном файле C ++ и никогда не должно быть проблемой, в частности, сделать это для "станд" Пространство имен (в том, что из "стандарт" библиотека).

Опять те, больше знакомы с C может задаться вопросом о "соиЬ", "епсИ" и что выглядеть "побитового сдвига" операторы. Вкратце "стандартный ввод", "стандартный вывод" а также "стандартная ошибка" реализуются как "iostream" объекты в C ++ называется "CIN", "соиЬ" а также "сегг" соответственно. << Оператор (как это реализовано с помощью базового класса ostream) используется для "записывать" для этого потока (также является >> Оператор используется для "читать" из входного потока). Так уже в такой короткой программе мы должны понимать, что C ++ имеет "перегруженные операторы" то, что может показаться довольно сложным, но он предусматривает некоторые очень мощные и аккуратные черты, которые делают C ++ совершенно отличается от большинства других языков вокруг.

Так что теперь это имеет смысл, что "соиЬ << "Привет мир!" собирается выводить "Привет мир!" в "стандартный вывод" (или "консоль" как мы обычно называем), но то, что делает вывод "епсИ" делать?

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

Наконец, одна вещь, которая может показаться "отсутствует" от нашего "главный" является оператором возврата. Ответ на этот вопрос является то, что это "необязательный" в C ++ (если опущена программа будет всегда возвращать 0 в ОС).
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

18 июля 2013, 7:31:34 AM   # 4
 
 
Сообщений: 24
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Я хочу научиться программированию на языке С.
Livan сейчас офлайн Пожаловаться на Livan   Ответить с цитированием Мультицитирование сообщения от Livan Быстрый ответ на сообщение Livan

18 июля 2013, 7:36:33 AM   # 5
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Я хочу научиться программированию на языке С.

Хорошо для вас - но это совсем другой язык C ++ ваш пост OT здесь.

EDIT: Я думаю, что я, вероятно, был немного резок с этим ответом (извините), но другой участник форума предложил наставничество в C так, мы надеемся, что может помочь вам.
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

18 июля 2013, 9:49:03 AM   # 6
 
 
Сообщения: 1764
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Я хочу научиться программированию на языке С.

Я мог бы быть в состоянии помочь. Я очень хороший программист C, но я не очень нравится, C ++.

Я хочу научиться программированию на языке С.

Хорошо для вас - но это совсем другой язык C ++ ваш пост OT здесь.


На самом деле, так как C ++ является почти надмножеством С, его пост на самом деле не по теме, не так ли?
Wolf0 сейчас офлайн Пожаловаться на Wolf0   Ответить с цитированием Мультицитирование сообщения от Wolf0 Быстрый ответ на сообщение Wolf0

18 июля 2013, 10:14:05 AM   # 7
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Я очень хороший программист C, но я не очень нравится, C ++.

Нет языка войны здесь, пожалуйста (частично почему я отметил C пост будучи OT).

Также обратите внимание, что название данной темы является C ++ Наставничество (не C / C ++ наставничество).

На самом деле, так как C ++ является почти надмножеством С, его пост на самом деле не по теме, не так ли?

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

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

18 июля 2013, 12:09:48 PM   # 8
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Видя, как мы сейчас сосредоточены на различиях между C и C ++, то здесь это еще один хороший пример того, как эти два языка различаются - "канонический для петель":

Те, кто могут быть знакомы с C, вероятно, считают, что это будет очень "стандарт" цикл заявление:
Код:
для (тип I = начать; я < конец; я ++)
   ; // сделать что-то здесь

Если тип это просто примитив (например, целое число), то, конечно, выше, будет также в равной степени применимы к C ++ * но *, когда тип является итератор (Тип наиболее часто используется для алгоритмов в стандартной библиотеке), то ваши цикл Заявление должно выглядеть как этот:
Код:
для (авто я = c.begin (), е = c.end (!), я = е; ++ я)
   ; // сделать что-то здесь

Вопрос: Что такое авто Ключевое слово здесь делает?
A. Это относительно новый (и явно несовместима с C ключевое слово) особенность C ++, что позволяет использовать ключевое слово "авто" вместо явного типа (компилятор будет работать тип для вас экономии вы печатаете и сделать проще код для чтения).

Q. Почему создать вторую переменную е (Т.е. почему бы не я! = C.end () вместо I! = Е)?
A. Как конец является функцией члена можно ожидать, чтобы иметь некоторые накладные расходы при вызове так предполагая, что мы ожидаем, что контейнер будет неизменен в течение этого цикла имеет смысл (и является гораздо более эффективным), чтобы только вызвать функцию члена сразу.

Q. Зачем использовать! =, А не А. итераторы не являются целыми числами и поэтому не ожидается реализовать < операторы, которые являются полезными для зацикливания целей.

Вопрос: Почему я ++, а не я ++?
пост-инкремент оператор A. A ++ необходимо создать временный объект итератора (возвращаемое значение оператора), тогда как версия Преинкремента не делает. Так ++ я не должен построить объект, но я ++ делает (что делает его менее эффективным).
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

18 июля 2013, 1:20:37 PM   # 9
 
 
Сообщения: 1764
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Я очень хороший программист C, но я не очень нравится, C ++.

Нет языка войны здесь, пожалуйста (частично почему я отметил C пост будучи OT).

Также обратите внимание, что название данной темы является C ++ Наставничество (не C / C ++ наставничество).

На самом деле, так как C ++ является почти надмножеством С, его пост на самом деле не по теме, не так ли?

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

Так что, если вы говорите о "ключевые слова" языка, что вы могли бы сказать, что C ++ является почти надмножеством C, но если вы говорите о написании какого-либо серьезного количества кода, то они принципиально разные языки (на самом деле просто смотреть на "Привет мир" Пример - за исключением некоторых ключевых слов языка нет ничего C в нем вообще).


Если вы пишете приложение на C ++, конечно, это не действует C, потому что C является подмножеством C ++. Но практически любой C вы можете написать валидный C ++ (очень мало случаев края, где одна вещь написана на C означает, что-то еще в C ++, но это довольно редко). Вот что я имел в виду C ++ является подмножеством С.
Wolf0 сейчас офлайн Пожаловаться на Wolf0   Ответить с цитированием Мультицитирование сообщения от Wolf0 Быстрый ответ на сообщение Wolf0

19 июля 2013, 1:08:51 PM   # 10
 
 
Сообщения: 965
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Очень круто нить! Если это когда-либо делал для Java, я буду способствовать ...
daybyter сейчас офлайн Пожаловаться на daybyter   Ответить с цитированием Мультицитирование сообщения от daybyter Быстрый ответ на сообщение daybyter

19 июля 2013, 2:31:07 PM   # 11
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Если вы пишете приложение на C ++, конечно, это не действует C, потому что C является подмножеством C ++. Но практически любой C вы можете написать валидный C ++ (очень мало случаев края, где одна вещь написана на C означает, что-то еще в C ++, но это довольно редко). Вот что я имел в виду C ++ является подмножеством С.

К сожалению, это не так просто - хорошая ссылка здесь: http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B

Цитата из первого абзаца следующим образом:

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

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

Так - "можно написать C, который будет компилировать с компилятором C ++" но это потребовало бы вам написать, что C с C ++ в виду (что было редко тот случай).

В точке случае даже довольно небольшие алгоритмы, такие как SHA256 должны быть изменены с их C версии, чтобы иметь возможность быть скомпилированы в C ++.

Что еще более важно - если вы заинтересованы в изучении C ++ я * не * советую вам сначала узнать C, как и просто научить вас много "плохие привычки" что вы должны будете "отучиться",
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

21 июля 2013, 5:11:20 AM   # 12
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

Итераторы и STL

Продолжая канонических петли взаимопонима итератор Концепция (и заметим, что это понятие не строго тип или класс) имеет важное значение для эффективного использования STL (Standard Template Library), которая где станд :: строка происходит от (а также очень полезных контейнеров, таких как списки, векторы и карты).

Итератор может быть проще всего представить себе как "указатель" (А на самом деле указатели могут быть использованы с STL), однако, не все итераторы равны в своих возможностях (так указатель на самом деле считается наименее ограничительный тип).

Наиболее ограничительные типы итераторов являются итератор ввода и выхода Итератором - они позволяют только движение в одном направлении и не допускать какие-либо перематывать произойти. Самые простые примеры этого являются "станд :: CIN" а также "станд :: соиЬ" объекты (которые эквиваленты C ++ для стандартного ввода и стандартного вывода языка C).

Так простой пример этих объектов в действии выглядит следующим образом:
Код:
#включают <строка>
#включают

используя патезрас;

Int основных ()
{
   строка следующего;
   в то время как (соиЬ << "\ п> ", GetLine (CIN, рядом))
   
}

Это простой "командная строка" (Выход в виде "> ") Консольная программа, которая принимает строку ввода, а затем рассматривает его как "команда" - если команда "уволиться" или "Выход" он завершает цикл иначе жалуется команда неизвестности.

Вы можете найти вид в то время как цикл будет немного странно, как она включает в себя "запятая" оператор. Это не так хорошо известный оператор может быть очень полезным для конкретных ситуаций. В этом случае он используется для вывода на "командная строка" перед функцией STL "GetLine" проводится оценка (состояние во время цикла на самом деле в соответствии со значением возвращаемого "GetLine").
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM

21 июля 2013, 11:23:20 AM   # 13
 
 
Сообщения: 1862
Цитировать по имени
цитировать ответ
по умолчанию Re: C ++ Наставничество

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

Код:
#включают <строка>
#включают <вектор>
#включают
#включают <алгоритм>

используя патезрас;

недействительным output_item (Const строка& s)
{
   соиЬ << s << '\ П';
}

Int основных ()
{
   строка следующего;
   вектор< строка > Предметы;

   в то время как (соиЬ << "\ п> ", GetLine (CIN, рядом))
   {
      если (next.empty ())
         Продолжать;

      Строка :: = size_type поз next.find ( '');
      строка CMD (next.substr (0, позы));

      строка дополнительная;
      если (позы! = строка :: НСС)
         дополнительные = next.substr (позы + 1);

      если (CMD == "уволиться" || CMD == "Выход" )
         ломать;
      иначе если (CMD == "Сортировать" )
         сортировать (items.begin (), items.end ());
      иначе если (CMD == "список" )
         for_each (items.begin (), items.end (), output_item);
      иначе если (CMD == "Добавить" )
      {
         если (! extra.empty ())
            items.push_back (за дополнительную плату);
      }
      иначе если (CMD == "Чисто" )
         items.clear ();
      еще
         соиЬ << "неизвестная команда: " << следующий << епсИ;
   }
}

вектор это "динамический массив" (Так что он может расти в размерах и быть повторно размера). Новые элементы могут быть легко добавлены в этот контейнер с помощью "отталкивать" (Это не реализовать "push_front" поскольку он не может сделать это эффективно, хотя вы можете использовать "вставить" функционировать, чтобы достичь того же результата).

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

Таким образом, в рамках 50 линий у нас теперь есть консольная программа, которая отображает приглашение и будет выполнять команды, относящиеся к динамическому массиву элементов.
CIYAM сейчас офлайн Пожаловаться на CIYAM   Ответить с цитированием Мультицитирование сообщения от CIYAM Быстрый ответ на сообщение CIYAM



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW