LINUX.ORG.RU

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

Tabs vs. Spaces

Голосования — Голосования

По мотивам этого треда

Tabs - только табуляция.
Spaces - пробелы или табуляция в виде 2 и более пробелов.

  1. Tabs 537 (42%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Spaces 457 (35%)

    ********************************************************************************************************************************************************************************************************************************************************************************

  3. Пофиг 297 (23%)

    ********************************************************************************************************************************************************************************

Всего голосов: 1291

 , ,

Quadmonster
()

Цикл с пред- и постусловием одновременно

Форум — Development

Есть ли такое в каком-либо ЯП? Что-то вроде

while(cond1)
{
     ...
} while(cond2)

Да, это легко реализуется разными способами, но все они требуют введения лишних сущностей либо дублирования кода. Например,

if(cond1) do
{
     ...
} while(cond2 && cond1)

или

bool f = true
while(cond1 && (f || cond2)) do
{
     f = false
     ...
}

ну и т.п. В общем, смысл в такой конструкции видится, есть ли такое в каком-либо распространённом ЯП?

 ,

unC0Rr
()

Qt тоже катится в...

Форум — Talks

Тащемто например:
https://bugreports.qt-project.org/browse/QTBUG-25896
https://bugreports.qt-project.org/browse/QTBUG-26013

Наткнулись в своём проекте. Для Ъ: начиная с 4.8 Qt криво рисует линии. Юзеры слёзно молят разработчиков пофиксить это безобразие, на что те отвечают: «не, это устаревший метод, вообще линии не нужны никому, кроме разве стрелочки рисовать в UI, а для этого у нас есть all brand new Qt5! Рисовать графики? Там точное совпадение линий не нужно.»

Как вкратце это выразил чувак в комментах:
because the whole QWidget/QPainter based interface is obviously seen as deprecated and they want everyone to make shiny blinking interfaces with QML and script JS, instead of /real/ work.

И эти слова можно применить, увы, к любому современному проекту.

Everyone wants to make shiny blinking interfaces instead of real work.

 

queen3
()

А давайте показывать IP-шник и/или куки анонимусов

Форум — Talks

Предлагаю идею:

Анонимусов на лоре не запрещать, но показывать в сообщениях его IP и JSESSIONID из куков.

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

Как вам?

Xintrea
()

Линеаризация истории

Форум — Development

Здравствуйте!

Есть репозиторий git (кусок истории):

...
* 8
* 7 merge
|\  
| * 6
| * 5
| * 4
* | 3
|/  
* 2
* 1
...

Как слить это раздвоение в одну ветку, чтобы получилось так:

...
* 8
* 6
* 5
* 4
* 3
* 2
* 1
...

Пробовал всяко делать rebase, но ничего не вышло. Он или ругается, или предлагает сделать ручной мерж чего-то с чем-то. Почему он не может разобраться автоматически, ведь все промежуточные шаги ему известны?

В коммите 3 изменения очень незначительные, буквально пять строк изменено (всего в файле 800).

Тот-же вопрос и по mercurial.

 ,

Puzan
()

Code formatter

Форум — Development

хочу найти subj, который делает подобное:

#include                                     <math.h>
#include                                   <sys/time.h>
#include                                   <X11/Xlib.h>
#include                                  <X11/keysym.h>
                                          double L ,o ,P
                                         ,_=dt,T,Z,D=1,d,
                                         s[999],E,h= 8,I,
                                         J,K,w[999],M,m,O
                                        ,n[999],j=33e-3,i=
                                        1E3,r,t, u,v ,W,S=
                                        74.5,l=221,X=7.26,
                                        a,B,A=32.2,c, F,H;
                                        int N,q, C, y,p,U;
                                       Window z; char f[52]
                                    ; GC k; main(){ Display*e=
 XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p<y; ){ T=p[s]+i; E=c-p[w]; D=n[p]-L; K=D*m-B*T-H*E; if(p [n]+w[ p]+p[s
]== 0|K <fabs(W=T*r-I*E +D*P) |fabs(D=t *D+Z *T-a *E)> K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
 *D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
  XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
                                   XEvent z; XNextEvent(e ,&z);
                                       ++*((N=XLookupKeysym
                                         (&z.xkey,0))-IT?
                                         N-LT? UP-N?& E:&
                                         J:& u: &h); --*(
                                         DN -N? N-DT ?N==
                                         RT?&u: & W:&h:&J
                                          ); } m=15*F/l;
                                          c+=(I=M/ l,l*H
                                          +I*M+a*X)*_; H
                                          =A*r+v*X-F*l+(
                                          E=.1+X*4.9/l,t
                                          =T*m/32-I*T/24
                                           )/S; K=F*M+(
                                           h* 1e4/l-(T+
                                           E*5*T*E)/3e2
                                           )/S-X*d-B*A;
                                           a=2.63 /l*d;
                                           X+=( d*l-T/S
                                            *(.19*E +a
                                            *.64+J/1e3
                                            )-M* v +A*
                                            Z)*_; l +=
                                            K *_; W=d;
                                            sprintf(f,
                                            "%5d  %3d"
                                            "%7d",p =l
                                           /1.7,(C=9E3+
                              O*57.3)%0550,(int)i); d+=T*(.45-14/l*
                             X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
                             *I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
                             179*v)/2312; select(p=0,0,0,0,&G); v-=(
                              W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
                               )/107e2)*_; D=cos(o); E=sin(o); } }

 , ,

MKuznetsov
()

Моё Qt-приложение на Android

Форум — Development

Эдакий Proof-of-Concept. Того, что можно сделать что-то уже хоть немного полезное уже на текущей Qt 5.1.1 для Android своими руками.

Написал приложение на QML/C++/Java. Функции - фильтрация входящих СМС. Приложение выбирает СМС от указанного в настройках номера и по указанному кодовому слову собирает из содержимого СМС список покупок и их количество.

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

Итак. Составные части программы:

1) Ресивер IncomingSMSReceiver и сервис SMSService - писались на Java, т.к. в текущем релизе ещё нет никакой поддержки Intent'ов и ресиверов.

2) Интерфейс - QML файлы (список, настройки, ручной ввод)

3) Логика - C++ - связанный через JNI с сервисами и через QML-биндинги с интерфейсом код парсера сообщений и враппера настроек Андроида.

Впечатления: К моему счастью на тот момент уже имелась базовая поддержка Android Clipboard и были исправлены (к 5.1.1) большинство ошибок развертывания на устройствах. В Qt Creator 2.8 даже добавили симпатичный графический редактор манифестов.

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

Также к сожалению, жрёт оно хоть и полтора МБ на .apk, но библиотеки Ministro тянут около 10 МБ библиотек в сжатом виде (и вангую, около 30 в распакованном).

Код

Скриншоты:1,2 (Lorem ipsum),3,4

(пусть вас не пугает английский язык в интерфейсе - с переводом к последним коммитам я разобрался)

Буду рад если есть предложения по улучшению/доделке, чтобы не стыдно было опубликовать в Google Play. Если для кого-то оно тоже будет полезным, могу выдать и готовый .apk.

P.S. inb4 ненужно; неосилятор; tldr

 , , ,

Adonai
()

Как вы считаете, если бы люди рождались...

Форум — Talks

Как вы считаете, если бы люди рождались с хвостами - купировали бы они хвосты или так оставляли бы?

Линукс здесь притом, что Линус тоже родился бы с хвостом.

ansky
()

посоветуйте хороших киберпанковских мультфильмов

Форум — Talks

Посоветуйте умных, правдоподобных мультфильмов в жанре киберпанк, что-нибудь близкое по духу к фильму "газонокосильщик".

Фильмы тоже можно, но, наверное, я их все пересмотрел.

Кстати, рекомендую посмотреть "газонокосильщик" режисёрскую версию, кто не смотрел, она на 37 минут длиннее и там правильная хронология сцен. А вторая часть - говно.

 ,

teod0r
()

10 причин почему программист на С++ может выбить много денег

Форум — Development

Список в конце поста написан Лавсаном 2 года назад. (2011-03-23 19:56:00) (источник)
Надеюсь, автор не подаст жалобу в Роспатент за перепечатку :-)
Кстати, sudo cast lovesan.

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

Временное резюме: С++ всё еще актуален по историческим причинам. Еще есть мобилки (sudo cast mono), гиперкластеры для шиндовс 3.11 (sudo cast vromanov) и базы данных. Т.к. он актуален, но не предназначен ни для чего (см. выводы в конце списка) новых специалистов по нему должно быть мало. Маленькая конкуренция на огромной области применения — огромное лавэ $$$. Вот это и есть истинная причина использовать кресты — возможность срубить €€€.

Честно говоря, «хитрый план» мне уже очень надоел, поэтому пора открыть карты.

Заодним, крестопоклонники смогут выйти на последний и решительный бой, т.к. сегодня пятница и вечером будет время пообщаться. Поклонникам мамкиного борща тоже наверняка есть что добавить, конструктивно и аргументированно.

Вот этот список:

  1. Вырвиглазный синтаксис и контекстно-зависимая грамматика
    • медленная компиляция
    • частые «internal error» в компиляторах
    • код плохо читается и его сложно поддерживать
    • разбор кода различными инструментами, вроде IDE, и его генерация - сильно затруднены
  2. ручное управление памятью
    • неудобства при работе с динамической памятью
    • утечки памяти
    • висячие ссылки
    • сегфолты
    • стандартные средства, как то malloc/new, работают медленно
    • фрагментация кучи
    • велосипедные аллокаторы на каждом шагу
      • которые далеко не факт что эффективнее malloc/new

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

    • отладка затруднена
    • написание GC, по факту, невозможно, отчасти из-за (5), (7) и (8)
  3. Никакого ABI
  4. Нестандартизированный и непредсказумый name mangling
  5. Дублирование функционала Си
    • сами фичи из Си никуда не деваются при этом
      • отчасти из-за того, что по функционалу превосходят аналоги из C++

    • запутывает новичков
    • malloc - new/new[], free - delete/delete[]
    • препроцессор - шаблоны
    • указатели - ссылки
      • ссылка не может быть NULL, что способствует появлению висячих ссылок и сегфолтов

    • структуры - классы
    • stdio - iostream
  6. Стандартная библиотека убога
    • Отсутствует даже такой функционал, как вменяемая работа со строками и многомерные массивы
      • Юникод?

  7. Слабая типизация
    • способствует ошибкам
    • затрудняет отладку
    • const не дает абсолютно никаких гарантий
    • при этом система типов невероятно переусложенена
      • в основном из-за пунктов (2), (5) и (9)
      • медленная компиляция
      • частые внутренние ошибки в компиляторах

  8. объектая система убога
    • практически никакой интроспекции
      • отладка затруднена
    • передача объектов по значению
      • понятие идентичности объекта теряет смысл
      • добавляет сложностей в управлении памятью
      • добавляет сложностей при отладке
      • используется часто, по причине (2)
        • перерасход по памяти
        • медленная работа

    • множественное наследование неудобно в использовании
      • проблема ромба по дефолту не разрешается никак

    • исключения в конструкторах гарантированно влекут утечку памяти
      • исключения в деструкторах тоже, и просто утечку - еще в лучшем случае
        • коды ошибок деструкторы и конструкторы возвращать не могут
          • ошибки в них не обработать никак
            • поэтому ими стараются не пользоваться
              • раздувание кода

    • деструктор можно вызывать до выхода из блока кода, или до delete
      • гарантированная утечка ресурсов/сегфлот
      • это не предотвратить никак, деструктор обязан быть public

    • одиночная диспетчеризация
      • виртуальные методы в конструкторах не работают
      • реализована убого
        • pure virtual function call
        • сложности в случае с множественным наследованием
        • деструкторы обязаны быть виртуальными
          • по дефолту - не виртуальные

        • никаких интерфейсов, только классы

    • порядок инициализации статических членов классов не определен
    • private, public и protected не дают никаких гарантий сокрытия данных
      • к инкапсуляции же не относятся совершенно никак

    • отсутствие «свойств»
      • вынуждает городить getter'ы и setter'ы
        • раздувание кода
        • размывание интерфейса класса

    • неявно генерирумые конструкторы, деструкторы и операторы присваивания
    • «friend» нарушают инкапсуляцию
  9. шаблоны
    • очень сильно замедляют компиляцию
    • раздувание кода
    • обфускация кода
    • результат раскрытия плохо предсказуем
    • сложности в отладке
      • километровые и плохо читаемые сообщения об ошибках при компиляции

    • нарушают инкапсуляцию
      • обязаны содержать реализацию в заголовочных файлах

    • позволяют генерировать некорректный код
  10. исключения
    • отсутствие finally/unwind-protect
      • заставляет городить классы ради одних деструкторов
        • раздувание кода
        • медленная компиляция
        • медленная работа

    • конфликтуют с другими возможностями языка
      • конструкторы/деструкторы
      • ручное управление памятью

    • работают медленно
    • малофункциональны (ср. CL condition system)

По причинам 3, 4, 5, 9 и 10 C++ совершенно неприменим для системного и низкоуровневого программирования. А по причинами 1, 2, 5, 6, 7, 8, и, опять же, 9 и 10 - и для прикладного.

У C++ нет области применения.

stevejobs
()

AJAX-фреймвор а ля goosh.org — есть такое?

Форум — Web-development

Интересно, не пробовал ли кто-то написать web-фреймворк для работы через командную строку а ля http://goosh.org ?

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

А велосипедить самому — влом. Особенно, учитывая объём работы.

Может, кто-то делал?

 , goosh, ,

KRoN73
()

Что если /dev/zero ....

Форум — Talks

Что будет если /dev/zero начнет выдавать вместо нулей единицы или рандом?

 ,

Deleted
()

mail.ru продаёт ваш номер телефона

Форум — Talks

как только я засветил свой номер у говномейл ру - пошел спамм.
год был телефон номер которого был засвечен только в qiwi.
но т.к. я хочу поиграть в архейдж, пришлось использовать его при регистрации на mail.ru
через два дня начал сыпаться смс спам, а сейчас даже позвонили предложив пройти соц опрос
на вопрос откуда мой номер и инфа что я в москве проживаю - сказали что подбирают последние 4 цифры и звонят.
это очевидная ложь, потому что только один пул обойти 140 дней при ожидании 20сек на номер.

напомню для Ъ - mail.ru это компания, на серверах которых петабайты личной переписки 99,999% населения этой страны у которых есть интернет.
каким дебилом нужно быть, чтоб думать, что у людей причинно-следственные связи нарушены?
и что делать, если невозможно пройти регистрацию без предоставления номера?

 ,

system-root
()

Отодвиньте вашу тарелку с борщом в сторону, специалисты по макросам!

Форум — Development

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

n = 3, k = 1, {x = y + z, y = x - z, z = x - y}
Тривиально. Поблажка - порядок неважен, т.е. есть возможность пользоваться именованными параметрами, например
smth = init(x = 100, y = 10)
эквивалентно
smth = init(y = 10, x = 100)
То есть нужно писать (генерировать) не A(n, k), а C(n, k) функций.

Квест заключается в написании макроса, который генерирует все возможные варианты init(...), потому что нам, например, лень. В тред приглашаются лисперы, racket-пацаны, скальщики, с++-темплейт-шаманы, nemerle-писатели (есть такие вообще здесь?) и остальные, кого еще меньше. У D там вроде зачаточно что-то было? Напишу все эти языки в теги.

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

Пример признаю абсолютно теоретическим.

 , , , ,

cdshines
()

Какой дистрибутив вы используете на десктопе?

Голосования — Голосования

Интересно, какова сейчас ситуация в экосистеме Desktop Linux на LOR. Какой дистрибутив вы предпочитаете для десктопа? Мультивыбор предусмотрен.

  1. Ubuntu (и производные: Xubuntu, Mint, Elementary, ...) 573 (36%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Debian (или производные, напр. LMDE) (не *Ubuntu) 390 (25%)

    *************************************************************************************************************************************************************************************************************************

  3. Gentoo (и производные: Sabayon, ...) 283 (18%)

    **************************************************************************************************************************************************************

  4. Arch Linux (и производные) 245 (16%)

    ****************************************************************************************************************************************

  5. Offtopic ;) 177 (11%)

    **************************************************************************************************

  6. Fedora (или RHEL и производные) 156 (10%)

    ***************************************************************************************

  7. openSUSE (или SLED и производные) 113 (7%)

    ***************************************************************

  8. MacOS 82 (5%)

    *********************************************

  9. Slackware (и производные) (не *suse) 61 (4%)

    **********************************

  10. Другой Linux (никак не входит в предыдущие пункты) 38 (2%)

    *********************

  11. *BSD 28 (2%)

    ***************

  12. Mageia (а также Mandriva, PCLinuxOS и производные) 16 (1%)

    ********

  13. LFS (и прочие самодельные) 13 (1%)

    *******

  14. Другой Ъ-Unix 9 (1%)

    *****

  15. Chrome OS 5 (0%)

    **

Всего голосов: 2189, всего проголосовавших: 1576

 , ,

KennyMinigun
()

Выключить правую кнопку на тачпаде

Форум — Desktop

Добрый день.

Подскажите, пожалуйста, как выключить правую кнопку на тачпаде (сделать так, чтобы нажатие правой кнопки обрабатывалось также, как и нажатие левой).

UPD: при том, что обрабатывается нажатие обеих областей одним/двумя/тремя пальцами.

 , , , ux31a,

Y
()

Что за файловый менеджер?

Форум — General

 ,

fragmentor
()

Песня воскресного утра

Форум — Talks

Ничего не могу с собой поделать, всё в этой песни слышу колбэки.

А я кодер на пайтоне,
На сишарпе в студии не пиши.
Да, ты не такой как все, и не любишь multithreading.
Я не буду тебя писать,
Подключать, вызывать, ожидать.
Меньше всего нужны мне твои callback'и…

 , , , , земфира

Y
()