LINUX.ORG.RU

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

Вопрос по call by value

Форум — Development

а правильно ли я понимаю, что вот тут

https://ru.wikipedia.org/wiki/Стратегия_вычисления#.D0.92.D1.8B.D0.B7.D0.BE.D...

написана чушь?

Там утверждается, что *как правило* каждый раз происходит копирование

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

Версия для любителей плеваться на рупедию

Call-by-value evaluation is the most common evaluation strategy, used in languages as different as C and Scheme. In call-by-value, the argument expression is evaluated, and the resulting value is bound to the corresponding variable in the function (frequently by copying the value into a new memory region).

разберем на примере scheme, который приведен там в качестве примера, пошагово

(define (tst x) (write x) (set! x b) (write x))

(define a 1)
(define b 2)

(tst a)
;out: 12

1 (tst a) — вычисляем a; связываем значение a (1) с идентификатором x

2.(write x) — вычисляем x; выводим вычисленное значение x (1)

3. (set! x b) — вычисляем b; связываем значение (2) c идентификатором x.

4 Повторяем шаг 2

Какое копирование они тут увидели? ЕМНИП, копирования по-дефолту вообще никогда не происходит

Все то же самое и в других языках, с которыми я знаком.

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

 

ambiguousnick
()

XMonad + XMobar

Галерея — Скриншоты

Вот такое вот окружение у меня получилось после двух-трёх месяцев использования XMonad. До этого перепробовал несколько различных DE(KDE(четвёртые и пятые), GNOME 3(второй не застал), MATE, LXDE, Xfce), из которых больше всего мне понравились кеды. После долго сидел на IceWM, пробовал(но не очень-то и осилил) FVWM2 и Openbox. Несколько месяцев назад начал изучать Haskell. Как-то знакомый посоветовал попробовать тайло-WM. Вот тогда я и решил попробовать XMonad.

Теперь немного о самом окружении. На скрине виден кусок моего конфига для XMonad, стыренного частично с Хабра, частично с гитхаба, и подогнанного под мои нужды. Для воркспейсов используется иконочный шрифт FontAwesome(подсказал kalterfive), на панели - Droid Sans Mono. В качестве плеера - mpd, клиент - ncmpcpp. Кроме того, хотя на скрине этого и не видно, но в панель выводится инфа о текущих плейлисте и песне. Терминал - urxvt, шрифт - terminus. Цветовая схема нагло стыбрена у intelfx.

Про ШГ в терминале - знаю, но не знаю, какой шрифт лучше туда поставить. Раскраска в виме тоже вырвиглазная, но опять же, не в курсе, на что поменять.

 , , ,

SeTSeR
()

Те самые, тёплые лампы

Галерея — Скриншоты

Ну, те самые «тёплые лампы», какие только могут быть, а точнее - измерение их параметров.
Прошло некоторое время с момента моего знакомства с AVR. Познакомились и пообщались - теперь потихоньку начинаем сотрудничать.
На картинке результат работы скромного аппаратно-программного комплекса, собственной разработки, для снятия вольт-амперных характеристик (ВАХ) электронных ламп.
ArchLinux, openbox, fbpanel, тема иконок - hydroxygen

P.S. Да, без Arduino, но аппаратная часть на ATMega328P

 , ,

lnx
()

Почему когда увольняешься так грустно?

Форум — Talks

сабж

а линукс тут при том, что теперь я ищу позицию девелопера под линукс

 

unt1tled
()

Подскажите как научиться фотографировать

Форум — Talks

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

Заранее спасибо.

 , ,

ist76
()

PharoVX

Галерея — Скриншоты

Есть такой стандарт - OpenVX, который определяет набор аппаратно-ускоренных функций компьютерного зрения, и теперь вот у моего любимого Smalltalk есть к нему биндинг.

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

Написано в основном во время пребывания на конференции ESUG 2015, вот как-то так.

Страничка проекта

 openvx, ,

yoghurt
()

Книга по алгоримам

Форум — Development

Купил Ceдживиkа и не осилил + в некоторых моментах сильно кривой перевод, хочу найти книгу в которой все формулы, алгоритмы были бы разъяснены и подробно.

 

jerekao
()

Новый системный вызов в OpenBSD — tame(2)

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

nicm@ и deraadt@ представили новый системный вызов, позволяющий максимально просто добавить в приложение возможность отказаться от излишних привилегий. Новый механизм призван дополнить недавно портированный и более сложный в использовании capsicum(4), а также ранее существовавший systrace(4).

Самое интересное то, что новый системный вызов позволяет четко отделить фазу инициализации процесса от его основной части, и наложить более строгие ограничения на последнюю. Ведь известно, что во время инициализации используется гораздо больше привилегий. Доступные флаги ограничений выбраны как разумный компромисс между гранулярностью и простотой использования на основе тщательного аудита устройства программного обеспечения из base system а также портов, наборы оптимизированы под наиболее популярные паттерны. Более сложным приложениям стоит посмотреть в сторону вышеупомянутого capsicum.

К объявлению также прилагаются патчи для 29-ти компонентов базовой системы, которые демонстрируют использование tame(2). Вот, например, diff для нового системного вызова для одного из демонов bgpd (он разделен на части по модели privsep, которые общаются между собой с использованием фреймворка imsg):

+#include <sys/tame.h>
…
+	tame(TAME_MALLOC | TAME_UNIX | TAME_CMSG);

Такой подход позволяет разработчикам максимально просто и быстро ограничить потенциальный вред от уязвимостей в своем софте, соответственно, есть шансы что он будет использоваться более часто и широко, чем гораздо более сложные для программиста capsicum и правильный privsep, или в определенном смысле менее гибкие и непростые в администрировании selinux/systrace и co.

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

 ,

val-amart
()

UPSERT и не только. Что ждать от PostgreSQL 9.5?

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

2 июля вышла PostgreSQL 9.5 alpha. Среди основных улучшений можно отметить:

  • BRIN-индексы («индексы блоковых зон»), позволяющие сверхкомпактно индексировать очень большие таблицы.
  • Существенные оптимизации скорости сортировки и хэширования в памяти.
  • Автоматизированное управление размером лога транзакций.
  • INSERT ... ON CONFLICT UPDATE, также известный как «UPSERT».
  • Аналитические функции CUBE и ROLLUP.
  • Безопасность строкового уровня (Row-Level Security, RLS).
  • Новые манипуляционные возможности (функции и операторы) для типа данных JSONB.
  • Инструмент pg_rewind и другие улучшения репликации и средств повышения отказоустойчивости.
  • Множественные улучшения в механизм Foreign Data Wrappers, включая IMPORT FOREIGN SCHEMA.
  • Существенные улучшения масштабирования на системах с большим количеством процессорных ядер и оперативной памяти.

Статья «UPSERT и не только. Что ждать от PostgreSQL 9.5?» расскажет о некоторых новинках подробнее.

Скачиваем

What's New (англ.)

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

 

postgresmen
()

Помогите составить план изучения С++

Форум — Development

Привет всем. У меня вопрос к людям знающим плюсы, можете помочь составить план изучения этого языка, в программировании я не полный нуб), есть неплохие знания Java, C# и базовые Python и Django, ну и в принципе я немного знаю C/C++, несколько лет назад написал пару простеньких программ на qt и на linux api, немного прожу на микроконтроллерах stm, есть какие-никакие знания паттернов. В этом году ходил на собеседование, на позицию Java Jun. Dev. - не получилось, не взяли, а может оно и к лучшему). Java - как-то уже изрядно надоеда, мне плюсы начали нравится тем, что нужно думать. Если честно мне не интересно и влом читать книги на 100500 страниц, в которых описана сырая теория, без практики, мне проще изучать все на практике. Может кто-то посоветует какой-то Open Source проект чтобы прокачать скилы или кому-то нужен помощник который за него будет делать простую роботу) Заранее спасибо за ответ.

 

swfvova
()

Шок от С. Как склеивать строки?

Форум — Development

Осваиваю си. Всё шло хорошо пока внезапно не понадобилось склеить строки (константные и переменные). Покурил stackoverflow. Предлагают 2 варианта:

Первый - создать char buf[молись_чтобы_хватило] и делать str(n)cat/sprintf в этот buf.

Второй - использовать asprintf, который расширение, нестандарт и вообще.

Вопрос: как вы склеиваете строки? Может есть какая-нибудь общепринятая либа?

Простите за нубский вопрос

 

makoven
()

Обнаружена скрытая загрузка проприетарного блоба браузером Chromium

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

Один из пользователей Debian установил Chromium 43 и обнаружил, что при первом запуске браузер, не уведомляя пользователя, молча загружает и устанавливает расширение «Chrome Hotword Shared Module». Указанное расширение содержит внутри себя блоб (бинарный компонент), исходники которого не предоставляются. При этом, расширение даже не отображается в списке установленных расширений и не предоставляет возможности себя отключить.

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

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

 ,

anonymous
()

Skype for web

Форум — Talks

Сиране жпрс...

http://blogs.skype.com/2014/11/14/please-welcome-skype-for-web-beta/
http://lenta.ru/news/2014/11/14/skypebrowser/
Для Ъ:

Пользователи Skype получат возможность совершать звонки напрямую из браузера, без необходимости устанавливать приложение на компьютер.

 ,

yirk
()

Открыт предварительный заказ книги «Статистический анализ и визуализация данных с помощью R»

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

В ближайшее время издательством «ДМК Пресс» будет выпущена печатная версия книги «Статистический анализ и визуализация данных с помощью R», в которой содержится:

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

Предыдущая редакция книги, исходные данные для анализа и примеры скриптов для их обработки доступны в репозитории на github и распространяются на условиях лицензии CC-BY-NC-SA.

Новость в блоге одного из авторов.

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

 ,

ymn
()

Модный, годный православный mock/test для C++. Не gmock.

Форум — Development

Есть чё? Желательно не прибитое к 11ому+.

Интересует штука, которая бы умела кейс с применением разных фикстур к одному тесту.

UPD. В принципе, собственно к gmock, я претензий особо не имею, важно что бы оно подружилось с сабжем, если он есть в природе :) А вот гуглотесты после питонячих меня сильно подразочаровали. Хотя казалось бы простое требование, которое запилить для компайл тайма не кажется сложным.

Что бы было понятней чего я жду от фрейма(хотя учитывая количество ответов, и что все они ведут на то, что я и так нагуглил - надеятся особо нечего):

struct FixtureA : ::testing::Test {
//setup/teardown
int a_;
};

struct FixtureB : ::testing::Test {
//setup/teardown
double a_;
};

bool test_method(void* data, size_t size);
TEST_MULTI_F(TestCase){//по идее тут обьявляется шаблонный класс
    ASSERT_TRUE(test_method(&a, sizeof(a)));
}

TEST_F(FixtureA, TestCase); // а тут он инстанируется
TEST_F(FixtureB, TestCase); // ну и тут
//как бэ почему не сделали так - непонятно

 , , ,

pon4ik
()

Как сверстать сайт на twitter bootstrap, не будучи дизайнером?

Форум — Web-development

Пытаюсь сверстать макеты для сайта, решил использовать bootstrap, чтобы не получилось вырвиглазное говно, а оно все равно получается именно такое. Ну конечно не просто черный текст на белом фоне как у просто html без css, но все равно плохо, и добавляются новые проблемы - этот bootstrap какой-то мудреный, непонятный. Если в обычном css мне понятно, что делать, чтобы там сайдбар сделать определенного размера, и чтобы он выглядел как сайдбар, а не как просто несколько ссылок, расположенных вертикально, то с бутстрапом ничего непонятно - там же на всё своя система. Да и в css вроде наследования нет, так что если я хочу сделать див с классом [bold]главная_кнопка[/bold], то черт его знает, как это сделать - ведь написать в css, что [bold]главная_кнопка[/bold] должна иметь те то и те то классы бутстрапа, я не могу.

И еще одна проблема - с бутстрапом все попытки разделения стиля и семантики летят к чертям, и получается, что то, как должен выглядеть сайт, прописано в самом html, а не в css. А в итоге прямо в html пишется, что этот див - 9 колонов, другой див - 3 колонки. Ужас.

 , ,

hlebushek
()

Не работает push() в стеке

Форум — Development

Привет. Стек через массив. Не работает push(), скорее я где-то накосячил.
Должно в стеке в итоге быть 0 .. 9, а там фигня.

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10

void push(int *stack, int *sp, int x);
int pop(int *stack, int *sp);

int main() {
	int *stack = malloc(sizeof(int) * SIZE);
	int *sp = stack;


	for (int i = 0; i < SIZE; i++)
		push(stack, sp, i);

	for (int i = 0; i < SIZE; i++)
		printf("%i\n", stack[i]);

	free(stack);

	return 0;
}


int pop(int *stack, int *sp) {
	return stack[*sp--];
}


void push(int *stack, int *sp, int x) {
	stack[*sp++] = x;
}

В чем ошибка?

 ,

ChuCha
()

Как правильно обрабатывать сокеты в потоках?

Форум — Development

(продолжение этого).

Итак, решил я своему «видеотранслятору» сделать жестокую проверку. Наклепал код:

<html>
<head><title>Simple streaming test</title>
<script>
	var img = new Image();
	img.onload = function(){
		document.getElementById("animage").src = img.src;
		setTimeout(stream_next, 50);
	}
	function stream_next(){
		img.src = "http://localhost:54321/" + Math.random() + ".jpg";
	}
</script>
</head>
<body onload="stream_next();">
<img id="animage">
</body>
</html>
Запустил демона, открыл эту страничку. Поначалу видео вполне себе отображалось. Но на каком-то моменте произошел затык. Причем, демон вообще перестал отзываться даже на запросы отдельных кадров! В отладочных сообщениях пишет «accept»:
		DBG("accept");
		newsock = accept(sock, (struct sockaddr*)&their_addr, &size);
		if(newsock <= 0){
			WARN("accept()");
			continue;
		}
		pthread_t handler_thread;
		if(pthread_create(&handler_thread, NULL, handle_socket, (void*) &newsock) < 0)
			WARN("pthread_create()");
и ... тишина.

По идее, если бы кончились файловые дескрипторы, accept вернул бы ошибку → появилось бы соответствующее сообщение.

Следовательно, косяк в потоках.

Не может ли быть такого, что у меня понасоздавалась куча потоков, к которым не было pthread_join и из-за этого новые потоки создаваться перестали??

Как вообще в таких случаях обрабатывают потоки, чтобы не было «зомби»? Может быть, впилить пул потоков и в отдельном потоке запускать на каждый новый pthread_join? Вообще ничего разумного в голову не приходит...

 ,

Eddy_Em
()

Шаблонов магия

Форум — Development

Вопрос отсюда. Есть такой вот код, который работает:

class Base {
protected:
    template <class T, class... Args>
    std::function<void(Args...)> bind_this_(void (T::*f)(Args...))
    {
        return [this, f](Args&&... args) { (static_cast<T&>(*this).*f)(std::forward<Args>(args)...); };
    }
};

class A : public Base {
    void foo(int arg1, int& arg2, std::string& str) {}
public:
    std::function<void (int, int&, std::string&)> get_foo_functor() { return bind_this_(&A::foo); }
};

A::get_foo_functor() привязывает к A::foo() указатель на экземпляр A (который неявный this) и возвращает обертку, которую можно использовать как функциональный объект с аргументами, такими же как у A::foo().

Вопрос 1: можно ли как-то обойтись без лямбды? Вопрос 2: как сделать шаблонный класс X с оператором operator()(), который, будучи инстанцироваьным с нужными параметрами, возвращал бы такой же функтор. Типа вот такого:

A a;
X< ... > foo_functor_producer(/* например */ &a, &A::foo);
auto ff = foo_functor_producer(); //< возвращает std::function<void (int, int&, std::string&)> 

 

asaw
()

tabex - cross-tab comminication

Форум — Web-development

https://github.com/nodeca/tabex

Зарелизил библиотеку для передачи сообщений между вкладками браузера. Делали чтобы шарить один вебсокет на много вкладок - это экономит траффик на клиенте и заметно разгружает сервер. В ридми есть пример для faye.

Готовых и удобных альтернатив найти не смог, везде недоделки разной степени.

Всем добра!

 

Vit
()