LINUX.ORG.RU

34
Всего сообщений: 1649

c++ использование объекта класса в switch

Добрый день. А как бы сделать так, чтобы можно было бы использовать объект в switch вместе со значениями из enum:

//...
enum Type {
    Type1,
    Type2
};

//...

SomeClass a;

//...

switch (a) {
    case Type1:
    //...
    break;
    
    case Type2:
    //...
    break;
}

 , , ,

rumgot ()

Выбор пути развития дальше после программирования

Хочу попросить помощи/совета/ваших историй. Я с детства увлекался программированием и сейчас в 21 год уже сменил несколько работ программистом. Но мне все это перестало нравится. Я хочу двигаться в сторону своего стартапа/бизнеса/веб студии/игры.

Но получается все это плохо. ~9 месяцев назад я ушел с работы в офисе чтоб попробовать фриланс (upwork) и свободное время тратить на свои проекты.

На апворке все было далеко не идеально, я вышел на уровень ~1k$ в месяц примерно, потихоньку делал с друзьями проект который провалился (отчасти можно сказать что все потеряли веру в этот проект и мотивацию, мы его доделали процентов на 60% и решили прекратить)

Мы сняли с другом квартиру чтоб проще было работать вместе (До этого встречались в макдональдсе с ноутом, это жесть). С одной стороны это сработало, с другой кучу времени забрал переезд на новую КВ, мотивация слабая и часто вместо работы мы играем/курим кальян/прочая дичь.

От программирования меня тошнит. Один из клиентов на апворке предложил мне к нему на фуллтайм и предложил интересные условия 3% акций, 4 дня в неделю, отличную зарплату после инвестиций. Но весьма низкую зарплату до инвестиций (В офисе я с легкостью могу x2 получать).

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

Моя проблема в том что в оставшиеся 3 дня выходных очень сложно найти мотивацию, трачу их на отдых.

Я вижу несколько путей развития для себя

  1. Двигаться на работе
    программист -> Lead -> CTO
    (Я собственно и являюсь лидом, но команда весьма маленькая так что я 70-80% времени трачу на обычный код, а под Lead я подразумеваю 0-30% кодинга)
  2. Делать игры (iOS, google play, возможно steam) и пытаться заработать на рекламе. (В 11 классе школы я с другом сделал игру на которой заработал 100$, считаю это неплохим результатом)
  3. Нанять программиста в украине и давать ему заказы с апворка (Я готов даже в небольшой минус работать ради опыта)
  4. Придумать большой стартап (или продолжить тот который я забросил). Под большим я понимаю такой который в случае успеха можно масштабировать на большой рынок, а маленький это скажем сайт по продаже чего-то для Киева (с невозможность идти на другие рынки).
  5. Сделать канал на ютубе связанный с программированием/стартапами (В детстве был канал по пиротехнике с 50К суммарного просмотра на ютубе, считаю это хорошим результатом с учетом отвратительного качества видео) Также был сайт по пиротехнике на ucoz с ~100 уникальный посетителей в день
  6. Попробовать бизнес не связанный с IT - я немного думал над этим, но идей вообще ноль, так что я не рассматриваю это.

Посколько мне мало лет (21) я считаю что пока что у меня есть время развивать все направления. Но проблема в том что если раньше я кодил каждый день в удовольствие (Только в школьные времена я успел сделать сайт, ютуб канал, соц сеть на php+js, игру на java, игру на Qt, и даже на чертовом делфи). А сейчас технических знаний в разы больше - а прогресс почти нулевой.

Подытожу, моя проблема в том что 
________
Кодить умею, но не хочу
Стартапить не умею, но хочу

Че делать то, а?

 , , ,

abs ()

IT-мифы

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

Вот, например. Многие люди отчего-то уверены, что в строке кода должно быть, в идеале, не больше 80 символов, потому что их большее количество, якобы, осложняет чтение. Особо умные приводят цифру 66 и ссылаются на Брингхерста.

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

Реальная же причина установки ограничения на 80 (иногда 100-120, зависит от языка) - удобство для диффов и мерджей, чтобы на экране вмещалось 2-3 столбца.

Пишите что сами знаете.

 , ,

myLogin ()

Сколько строк кода в месяц пишут на Си

Интересует, сколько (примерно) строк _рабочего_ кода в месяц - нормальный результат для разработчика фуллтайм? Считается, что область применения разработчику достаточно хорошо известна.

 , , ,

conalex ()

Концепция программы для Linux

Здравствуйте! Интересно Ваше мнение. Я системный администратор 40 автономных ПЭВМ.

По политике нашей организации ПЭВМ настроены таким образом, что использование дисководов запрещено (в fstab nouser), флеш-носители работают только учтённые (с функцией шифрования). Иногда (довольно часто) начальство ставит задачи на перенос файлов извне на автономные ПЭВМ.

Задачи эти могут поступить в любое время дня и ночи) Особенно ночи)))

И я задумался о написании программы для предоставления пользователю доступа для монтирования диска, на основании разового пароля.

Написал программу, присвоил ей suid (root). Программа имеет два файла с паролями. В первом файле все пароли которые я генерировал заранее, во второй файл вносятся гашенные пароли (уже использованные).

Программа представляет собой GUI интерфейс с окном ввода пароля и кнопками «Монтировать» и «Размонтировать» диск. Пользователь вводит пароль который я ему продиктовал, программа читает список гашенных паролей. Если пароль не использовался (его в этом списке нет) программа читает файл со всеми паролями, и если он там есть производит монтирование диска и копирование его образа командой dd в каталог (чтобы потом посмотреть, что за диск вставляли).

Использованный пароль заносится в список гашенных паролей. Кнопка размонтировать доступна без ввода пароля. Файлы паролей не доступны пользователям на чтение и запись (root:root, 770).

Как Вы оцените эту идею (конечно, проще генерировать пароли - но в QT я ещё этому не научился)?

Как бы поступили Вы?

 ,

Sandro331k ()

Удобное количество строк для чтения кода

Вот у вас открыт редактор кода или просмотрщик и вы читаете код подобно книге страницу за страницей. Вот сколько обычно строк кода в одной странице у вас и вам при этом комфортно читать код? Ещё интересно при этом на каком языке вы читаете код обычно?

 

ados ()

Где искать начинающих разработчиков?

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

 , ,

Gremlin_ ()

Программирование для Веб: JavaScript, HTML формы, обработчики, CGI, шелл

Ищу разовые заказы или работу в небольших проектах. Петербург или удалённо.

Портфолио:

Фотография о. Лауватсаари в Ладоге - JavaScript для магазина цифровых товаров создающий форму оплаты, CGI обрабатывающий HTTP оповещение платёжной системы и создающий уникальную ссылку на товар.

Валидация счёта Яндекс.Деньги - просто пример.

Форма заказа решения задач по начертательной геометрии - парсинг формы с файлами и пересылка заказа на почту исполнителя.

 , , , ,

Mazilin ()

Вычисления на этапе компиляции, DSL и C++20

Читал тут С++20 на подходе! Встреча в Рапперсвил-Йона и последние пункты про constexpr заинтересовали

Ещё одно занятное изменение, которое рассматривается для приёма в C++20 — это constexpr! функции.

Такие функции обязаны выполняться только на этапе компиляции, любая попытка использовать их в runtime приведёт к ошибке компиляции. Это одно из изменений необходимых для рефлексии в C++

...

Множество языков программирования в данный момент компилируют/транслируют регулярные выражения ещё перед запуском программы. Таким образом, когда программа стартует, все регулярные выражения уже преобразованы в соптимизированный конечный автомат.

В C++ это не так:

bool is_valid_mail(std::string_view mail) {
    static const std::regex mail_regex(R"((?:(?:[^<>()\[\].,;:\s@\"]+(?:\.[^<>()\[\].,;:\s@\"]+)*)|\".+\")@(?:(?:[^<>()\[\].,;:\s@\"]+\.)+[^<>()\[\].,;:\s@\"]{2,}))");

    return std::regex_match(
        std::cbegin(mail),
        std::cend(mail),
        mail_regex
    );
}
В коде выше конечный автомат из регулярного выражения будет строится при первом заходе в функцию is_valid_mail(). Это долгая операция, которая в добавок будет выполняться в критической секции.

С готовящимися новинками для constexpr вычислений (constexpr new, is_constexpr_evaluated() и др.) можно будет в C++ делать множество вещей на этапе компиляции, в том числе можно будет сделать constexpr std::regex.

С constexpr std::regex конечный автомат для функции is_valid_mail() построится ещё на этапе компиляции.

Непонятно, в этом «множестве других языков программирования» сделана какая-то специальная поддержка регулярных выражений, или же они научились на этапе компиляции разбирать и оптимизировать произвольные DSL из строки (регэкспы это тоже DSL кмк)? С помощью каких механизмов это делается? Я вспоминаю синтаксические макросы и зависимые типы, но в плюсах явно ни то, ни другое, тогда что? Какие будут ограничения у новых constexpr! по сравнению с другими подходами?

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

 , , , ,

Crocodoom ()

Стоит ли переквалифицироваться из админов в программисты?

Предыдущую мою тему удалили с мотивировкой «провокация flame», хотя я ничего не провоцировал. Так вот, если максимально дистанцироваться от моей личности и места жительства, как ответите на вопрос? Причина, почему надоело одминить — скучно. А также одно неаккуратное движение — и упадёт рабочая система. Мне что-то кажется, что код писать интереснее. но я писал его только в одиночку, совместно с другими людьми над проектом не работал.

 ,

te111011010 ()

программирование логики (?)

Уже давно хочу научиться в программирование. Интересующая область — автоматизация проектирования.

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

Потому вопрос — в какой литературе (англоязычной или русскоязычной, в другие языки не могу) можно почерпнуть знания о формализации операций выбора?

Также хочу научиться писать на каком-нибудь более развитом языке чем VisualBasic программы для api NX, SolidEdge, Ansys, так что, было бы здорово увидеть рекомендации по литературе для обучения какому-либо из этих языков программирования: C/C++, Visual Basic, C#, Java, Python. И рекомендации, какому из этих языков учиться, тоже.

 , , ,

frigate_freedom ()

Ad hoc или серебрянные пули?

В каком стиле вы чаще решаете возникающие задачи - костылём под конкретный случай или реализуете решение проблемы в принципе? И какой стиль сильнее ограничивает развитие программы?

 ,

alexferman ()

Ищу Scala программиста

Добрый день! Ищу специалиста, который поможет установить и запустить готовый код на Scala https://github.com/ornicar/lila Оплата по договорённости, возможно дальнейшее сотрудничество по доработке этого движка.

 , , ,

Academia ()

Ищу Scala программиста

Добрый день! Ищу специалиста, который поможет установить и запустить готовый код на Scala https://github.com/ornicar/lila Оплата по договорённости, возможно дальнейшее сотрудничество по доработке этого движка.

Перемещено Pinkbyte из linux-org-ru

 , , ,

Academia ()

Что происходит с людьми после 30+?

Открываю трекер и вижу такую картину: https://imgur.com/a/SSTvLrf

Это что, выгорание? Если да, то как этого избежать?

Я не хочу через десяток лет начать постить темы про «Смена деятельности на балет и керамику в 30+».

 ,

Octagon ()

Роботы сумели собрать стул из ИКЕИ

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

Инструкция по сборке стула Stefan занимает 12 страниц, и далеко не каждый лоровец способен ее осилить. Однако роботы собрали стул за 20 минут, 9 минут они потратили на сбор всех деталей в готовое изделие и 11 минут на поиск деталей и координацию своих действий.

https://youtu.be/k5y47sgd5l4

 ,

Bobby_ ()

Время на документирование

Как много времени (в % от написания кода/администрирования) у вас занимает документирование?

Дискасс.

 , ,

myLogin ()

Сравнение ЯП и музыкальных жанров

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

Зачынаю:

  • COBOL — Industrial. Орыгинально, нетленно, беспощадно.
  • Pascal — New Age. Слишком академично и странно, чтобы взлететь, но, тем не менее, как-то взлетело.
  • Delphi — Trance. Попытка намешать в Pascal моднявое ООП. Несмотря на почтенный возраст, всё ещё шевелится, хоть и считается уделом унтерменшей.
  • FORTRAN — Techno. Когда-то было в каждом тапке, сейчас шевелится весьма неохотно, можно сказать, что никак.
  • BASIC — Disco. Смари, как деда под Коммодор отплясывал, ух!
  • Visual Basic — Eurobeat. Нуфф хрюкнул и пошёл переустанавливать Офис в Мюнхене.
  • Algol — Big Beat. Поплясало и полегло, хотя в своё время выглядело многообещающе.
  • CRock. Ценится в основом олдфагами, что не мешает активно набирать новых апологетов. Обросло кучей стандартов.
  • Objective-C — Alt Rock. Think different, так сказать.
  • C++Metal. По незнанию часто путается с роком. Тоже имеет кучу стандартов. Многими считается слишком тяжёлым и упоротым по сравнению с роком.
  • Java — Drum'n'Bass. Моднявая штука из 90-х, эволюционировавшая до неузнаваемости; во многих нишах уходит на второй план, но актуальности не теряет. Характеризуется однообразностью и быстрым темпом из-за многословности.
  • PerlJazz. Побольше импровизируй, каждая программа не должна быть похожа на другую, даже если делает то же самое.
  • PythonDub. Примитивно, уныло, своеобразно. Форма — всё, если басы не по PEP-8 — нещитова.
  • RubyReggae. Любим наркоманами и прочими альтернативно одарёнными. Одно время опопсел (Ruby on Rails), но после опять ушёл в андерграунд.
  • JavaScriptPop. Постоянно всасывает в себя другие популярные жанры ради повышения удобоваримости. Любители других языков не понимают, как это можно слушать, некоторые даже перестают из-за этого выполнять телевизоры в браузере. Но рынок упорно продвигает, а Emscripten позволяет любую музыку превратить в слащавую попсу.
  • PHP — Rap. Претерпел за время существования большие изменения, но суть в целом осталась той же. Неотъемлемый атрибут низших слоёв населения. В своей нише (работа с текстами), тем не менее, весьма крут и практически незаменим.
  • Tcl — Chiptune. Вне культуры игровых сонсолей (Tk) мало кому нужен.
  • Shell — EBM. Дремучая для неподготовленных вещь, принципиально не менялась за десятилетия.
  • Bash — Darkwave. Ибо.
  • Rust — Brostep. По сути, митол со свистоперделками, поражающий неподготовленный моск. Доступен далеко не каждому. Выглядит многообещающе и революционно, но на деле пошумел и не взлетел.
  • APL — IDM. Весьма. Своео6р4зная. М`зыка. Но в сущн0сти, н-283чем не примечат3льная, если закрYть глаза на зв8329коjfkls#$@#$98вые особенНости *анра.
  • Assembler — Classic. Нуфф сказал. Некоторые даже пытаются это сейчас писать, но переносимость между музыкальными инструментами оставляет желать лучшего.
  • Brainfuck — TDPLM.
  • Malbolge — Noise. Многими за музыку не считается, ибо слушать невозможно. Пока не проникнешься и не расширишь сознание матаном.
  • Swift — Vaporwave. Взяли старое и перепели, культурная ценность околонулевая, но хипсторкам нрявицца.
  • ZSH — Retrowave. Непонятно, зачем, но раз запилили — значит, пусть будет.
  • ML — Blues. Подальше от суровых программ, поближе к душевной математике. Пыталось стать попсятиной (R'n'B/Ocaml), но как-то не взлетело.
  • Lisp — Ska. Опередил своё время, в настоящей время в основном считается уделом паствы церкви GNU Footbalcs.
  • Smalltalk — Garage. Ценим своей простотой, хорошо сочетается с другими жанрами, даровал жизнь ряду новых направлений, но сам остался уделом маргиналов.
  • PL/1 — Electronica. Изрядно нашумело, было революционно, но слишком оторвано от реальности и сложно к приготовлению, посему ушло вместе с эпохой.
  • C# — House. Король танцпола, тупой, но при этом разнообразный в плане ответвлений. С чем его только не мешали...
  • Haskell — Chillout. Старательно обходит острые углы и при этом как-то умудряется быть полноценным жанром, хотя применимость остаётся нишевой.
  • ForthHardcore. Тупо, сурово, сидит десятки лет в андерграунде и не вылазит оттуда, на адекватную голову употреблять не рекомендуется. А вот для атсральных астрономов — самое то, часами циферки ногами молотить.
  • Go — Synthpop. Многообещающе, вроде как взлетело, да не взлетело.
  • D — Djent. Кто-то видит в этом смысл и гордится, по факту нужен только ценителям, способным отличить рок от митола и шарящим хотя бы в типовых риффах (написании макросов и шаблонов), иначе растворяется в пучине ненужности.
  • Crystal — Future Funk. Бессмысленная НЁХ и перепевочка.
  • Erlang — Witch House. ФункциАнально, пропитано демонами параллелизации.

Критикуйте, дополняйте, ненужняйте.

 , , ,

bodqhrohro_promo ()

textbearbeitung

Попытался поставить на свой компьютер но никак не смог найти способ. В Sinaptik не получилось, DEB не нашел в репозитории не оказалось. Может кто подскажет может с терминала есть способ. Заранее спасибо.

 , ,

giba ()

Код C++ для Линукс. Ожидание нажатия клавиши Enter

Около часа тред не мог быть решён, поэтому предлагаю отлаженный рабочий код для Linux, g++, libc. Наследовано http://www.cplusplus.com/forum/articles/7312/ с той лишь разницей, что надо чистить буфер ввода, чтобы нажатие enter считывалось снова, а не захватывалось из предыдущего ввода.

Небольшой helloworld, который здоровается с пользователем, запрашивая его имя и ожидая нажатия Enter для завершения.

Исправлено:

$ cat 1.cpp
#include <iostream>
#include <limits>
using namespace std;

int main(int argc, char** argv)
{
  string name;
  cout << "Программа Hello!" << endl;
  cout << "Введите Ваше имя и нажмите enter: "; 
  cin >> name;
  cout << "Hello, " << name << endl;
  char c[1];
  cout << "Нажмите Enter для продолжения ";
  //cin.clear();
  cin.ignore(numeric_limits<streamsize>::max(), '\n');
  cin.getline(c, 1);
  return 0;
}

$ g++ 1.cpp -o out
$ ./out
Программа Hello!
Введите Ваше имя и нажмите enter: znavko
Hello, znavko
Нажмите Enter для продолжения
$

 , ,

znavko ()