<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Порок Ubuntu]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=37494</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=37494&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Порок Ubuntu».]]></description>
		<lastBuildDate>Fri, 06 Feb 2015 14:23:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444498#p444498</link>
			<description><![CDATA[<div class="quotebox"><cite>s.xbatob пишет:</cite><blockquote><p>Теперь (и только теперь) можно заняться и оптимизацией.</p></blockquote></div><p>зачем? Всё и так работает.<br /><a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0%B8%D0%BD%D0%B3">рефакторинг</a> разве-то поможет.</p><div class="quotebox"><cite>s.xbatob пишет:</cite><blockquote><p>Впрочем, советы drBatty, тоже неоднозначные.</p></blockquote></div><p>я и не господь б-г.&nbsp; Могу и заблуждаться. Просветите, буду благодарен.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 06 Feb 2015 14:23:39 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444498#p444498</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444495#p444495</link>
			<description><![CDATA[<p><strong>Peter</strong>, ну, как и предсказывалось с самого начала&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /> <br />Теперь (и только теперь) можно заняться и оптимизацией. А стиль программирования у вас действительно мутный. Впрочем, советы <strong>drBatty</strong>, тоже неоднозначные.&nbsp; <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p>]]></description>
			<author><![CDATA[null@example.com (s.xbatob)]]></author>
			<pubDate>Fri, 06 Feb 2015 13:32:48 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444495#p444495</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444377#p444377</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Возможно, их там и нет, иначе вы бы их сразу заметили.</p></blockquote></div><p>я сразу заметил, в посте №8.</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p> А до этого я полагался на то, что правильное<br />перед значение перед вызовом sendto() будет там и после вызова recvfrom(), но я не инициализровал его перед вызовом<br />recvfrom(), хотя обязан был это сделать.</p></blockquote></div><p>потому что инициализацию надо делать непосредственно перед использованием. Лучше и объявление тоже. Тогда такие ошибки сразу видно.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 06 Feb 2015 04:12:28 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444377#p444377</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444304#p444304</link>
			<description><![CDATA[<p>Сейчас посмотрел - оказалось, что эту ошибку я занёс, когда создавал эту imit_cam.c<br />из другой программы. У меня есть несколько утилит для работы с камерой по udp<br />и в них этой ошибки нет, а когда я преобразовывал одну из них в эту, то, по-видимому,<br />что-то затёр или пропустил.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 17:35:11 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444304#p444304</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444298#p444298</link>
			<description><![CDATA[<p>Благодаря вашей настойчивости я всё же нашёл у себя ошибку в imit_cam.c.<br />Я одновременно сделал, чтобы 3-м параметром в recvfrom() и sendto() было не число и не переменная int,<br />а переменная типа size_t, а также, чтобы последнему аргументу, который правильно был переменной типа socklen_t,<br />перед вызовом функции заведомо присваивалось правильное значение. А до этого я полагался на то, что правильное<br />перед значение перед вызовом sendto() будет там и после вызова recvfrom(), но я не инициализровал его перед вызовом<br />recvfrom(), хотя обязан был это сделать. Так что порок оказался у меня, а Ubuntu я, выходит, оклеветал.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 15:09:09 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444298#p444298</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444287#p444287</link>
			<description><![CDATA[<p>Конкретных ошибок вы не назвали. Возможно, их там и нет, иначе вы бы их сразу заметили.<br />Однако, если успею, попробую уточнить ситуацию.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 14:06:48 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444287#p444287</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444285#p444285</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>void* для этого и предназначен.</p></blockquote></div><p>угу. Потому что без void* невозможно создать полиморфную функцию. А с void* можно, но никто не может гарантировать правильность типа. Т.е. правильность работы держится буквально <strong>на честном слове</strong>. Да, вы торжественно обещаете, что будете всё делать по правилам. Но не делаете.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Конечно, Ubuntu, иначе как объяснить, что в ней в Qt timeout таймера вместо 4000 миллисекунд составляет 4063?</p></blockquote></div><p>я без понятия. Это проблема Qt, при чём тут Ubuntu?<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Сдаётся мне, что вы руководствуетесь тем фактом, что &quot;метода военная действие наступательное всегда действию оборонительному<br />предпочитает&quot;, вот вы и стараетесь сбить меня с одних позиций, будучи не в силах взять другие.</p></blockquote></div><p>да, ситуация патовая: я вам указал ошибки, но вы их исправлять не желаете, мотивируя это тем, что дескать &quot;мой быдлокод в некоторых случаях работает как надо&quot;.</p><p>Я вот не понимаю, почему нельзя перед sendto сделать отладочную печать, выводя все параметры в удобочитаемом виде? Ну раз оно пишет EINVAL, значит параметры испорчены, так? Вот и узнаем, КАКОЙ параметр испорчен. Либо докажем, что у нас всё хорошо, а быдлокодеры Марка испортили няшную glibc.</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Т.е. я так и не уловил, почему <s>в Ubuntu</s> <strong>у вас</strong> наличие gettimeofday() в тексте влияет на прдшествующую её вызову sendto().</p></blockquote></div><p>//fixed</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 05 Feb 2015 13:55:49 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444285#p444285</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444283#p444283</link>
			<description><![CDATA[<p>void* для этого и предназначен.<br />Конечно, я бы не стал пытаться вместо double передавать int, но вместо переменной типа double можно подставить число этого же типа.<br />Конечно, Ubuntu, иначе как объяснить, что в ней в Qt timeout таймера вместо 4000 миллисекунд составляет 4063?<br />А в Debian в пределах гранулированности.<br />Сдаётся мне, что вы руководствуетесь тем фактом, что &quot;метода военная действие наступательное всегда действию оборонительному<br />предпочитает&quot;, вот вы и стараетесь сбить меня с одних позиций, будучи не в силах взять другие.<br />Т.е. я так и не уловил, почему в Ubuntu наличие gettimeofday() в тексте влияет на прдшествующую её вызову sendto().</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 13:29:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444283#p444283</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444279#p444279</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Я же сказал, что и g++ скомпилировал это без сообщений.<br />рп</p></blockquote></div><p>я же сказал, что отсутствие сообщений ни о чём не говорит.</p><p>В сишке к сожалению всего один самый тупой static_cast, который указатели в x86 совершенно тупо кастует, причём ошибок не пишет, даже если кастовать (тёплое*) в (мягкое*).</p><p>А специальный тип void* так вообще во что угодно неявно кастуется.</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Для входных аргументов это не важно, они могут быть заданы и числами</p></blockquote></div><p>важно.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Я удивляюсь, как можно относиться с неприязнью к C. Это удобный и естественный язык, не случайно ведь<br />именно на нём написана Linux.</p></blockquote></div><p>просто вы ещё с UB не сталкивались.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Наверное, это всё же порок Ubuntu</p></blockquote></div><p>угу. Напомнило &quot;во всём виновата Windows&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 05 Feb 2015 13:18:37 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444279#p444279</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444275#p444275</link>
			<description><![CDATA[<p>Я же сказал, что и g++ скомпилировал это без сообщений.<br />рп<br />Таж же только main, других модулей и подпрограмм нет, какие могут быть проблемы хоть с переменными,<br />хоть с указателями? Пока программа работает, указатель остаётся актуальным. Например, в реальной<br />программе на Qt, с которой может связываться этот imit_cam.c, указатели на массивы передаются из<br />одного потока в другой и всё это работает без сбоев.</p><p>Для входных аргументов это не важно, они могут быть заданы и числами, это важно для выходных аргументов,<br />куда подпрограмма что-то записывает.</p><p>Я удивляюсь, как можно относиться с неприязнью к C. Это удобный и естественный язык, не случайно ведь<br />именно на нём написана Linux.</p><p>Код простой, и у вас же вариант с отступами. Там всего три вызова функций, последний в цикле.<br />Ничего сложного там нет, всё построено из найдённых примеров. Наверное, это всё же порок Ubuntu,<br />в ней вон и QTimer интервалы выдерживает неточно.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 12:49:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444275#p444275</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444268#p444268</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Для этого ещё нужен extern.</p></blockquote></div><p>угу. Нужен.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>А в присланных мною программах все переменные локальные.</p></blockquote></div><p>проблема указателей в том, что они ВСЕГДА глобальные. И если у вас что-то возвращает/принимает указатель, то эта переменная всё равно видится где угодно. Даже если она и &quot;локальная&quot;.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Если тип не устраивает компилятор, то об этом будет сообщение. А если сообщения нет, значит, компилятор сам привёл<br />аргументы к требуемому типу. Например, число.</p></blockquote></div><p>не правильно. Компилятор сам конечно переведёт, <strong>но проверять компилятор ничего не будет</strong>, полагается, что программист сам знает, что делает. В сишке можно что угодно перевести во что угодно, и никаких сообщений это не вызовет. Сообщения возникают лишь если компилятор в принципе не может что-то перевести. А если может, то как в ассемблере: есть просто тупо адрес, и тупо ВСЁ. Причём никого не волнует, если у вас ошибка, компилятор ничего проверять не будет.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Само собой ничего не бывает.</p></blockquote></div><p>в сишке с UB — на каждом шагу.<br />Именно потому, многие люто, бешено ненавидят сишку.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Насчёт регистров не моё дело. Если же с -O3 программа работает неправильно, то это опять же следствие ошибки<br />и она будет выявлена и исправлена.</p></blockquote></div><p>исправляйте.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Вот вы уже три страницы меня обличаете и даже, можно сказать, окатывате ушатами, а ошибку в присланной imit_cam.c<br />так и не нашли, хотя и напрягали всю силу своей мысли. Наверное, тут нужен Шерлок Холмс.</p></blockquote></div><p>в вашем коде копаться — дело не очень приятное.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 05 Feb 2015 11:41:36 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444268#p444268</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444263#p444263</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Представьте себе, читал про static. Но без особой надобности я об этом не беспокоюсь.<br />Например, у меня редко бывает так, чтобы переменная из одного модуля была видна в другом.</p></blockquote></div><p>у вас так ВСЕГДА, потому что &quot;не беспокоитесь&quot;.</p></blockquote></div><p>Для этого ещё нужен extern. А в присланных мною программах все переменные локальные.<br /></p><div class="quotebox"><blockquote><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>И опять же не понимаю, как размещение объявлений переменных в одном месте может<br />влиять на надёжность и переносимость</p></blockquote></div><p>ну во первых вы тип не можете задать нормально. Проблема как раз в том и заключается, что <strong>UB может как угодно и когда угодно проявиться.</strong> А может и НЕ проявится.</p></blockquote></div><p>Если тип не устраивает компилятор, то об этом будет сообщение. А если сообщения нет, значит, компилятор сам привёл<br />аргументы к требуемому типу. Например, число.<br /></p><div class="quotebox"><blockquote><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>а также, как это они могуть побиться, пока подпрограмма<br />не дойдёт до выхода.</p></blockquote></div><p>есть Over9000 причин для этого.</p></blockquote></div><p>Само собой ничего не бывает. Если они попортятся, то только из-за ошибки, тогда она будет замечена и исправлена.<br /></p><div class="quotebox"><blockquote><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Компилятор отведёт им место в каком надо сегменте и они там и останутся.</p></blockquote></div><p>ещё они в регистрах лежат, не только в памяти. И не факт, что эти регистры сохраняются во время сисколлов. Может сискол делает pusha, но 32х битную версию по недосмотру? А может и не делает. Кто знает? В amd64 множество &quot;лишних&quot; регистров, которых не было в IA-32, потому старый код про них не в курсе, и возможно их не сохраняет. Этот старый код может вызывать более новый код в ядре, который новые регистры использует. Может сам компилятор запутался, и что-то не так соптимизировал (кстати, с -O3 это бывает).</p></blockquote></div><p>Насчёт регистров не моё дело. Если же с -O3 программа работает неправильно, то это опять же следствие ошибки<br />и она будет выявлена и исправлена.</p><p>Вот вы уже три страницы меня обличаете и даже, можно сказать, окатывате ушатами, а ошибку в присланной imit_cam.c<br />так и не нашли, хотя и напрягали всю силу своей мысли. Наверное, тут нужен Шерлок Холмс.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 10:38:42 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444263#p444263</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444258#p444258</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Представьте себе, читал про static. Но без особой надобности я об этом не беспокоюсь.<br />Например, у меня редко бывает так, чтобы переменная из одного модуля была видна в другом.</p></blockquote></div><p>у вас так ВСЕГДА, потому что &quot;не беспокоитесь&quot;.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>И опять же не понимаю, как размещение объявлений переменных в одном месте может<br />влиять на надёжность и переносимость</p></blockquote></div><p>ну во первых вы тип не можете задать нормально. Проблема как раз в том и заключается, что <strong>UB может как угодно и когда угодно проявиться.</strong> А может и НЕ проявится.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>а также, как это они могуть побиться, пока подпрограмма<br />не дойдёт до выхода.</p></blockquote></div><p>есть Over9000 причин для этого.<br /></p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Компилятор отведёт им место в каком надо сегменте и они там и останутся.</p></blockquote></div><p>ещё они в регистрах лежат, не только в памяти. И не факт, что эти регистры сохраняются во время сисколлов. Может сискол делает pusha, но 32х битную версию по недосмотру? А может и не делает. Кто знает? В amd64 множество &quot;лишних&quot; регистров, которых не было в IA-32, потому старый код про них не в курсе, и возможно их не сохраняет. Этот старый код может вызывать более новый код в ядре, который новые регистры использует. Может сам компилятор запутался, и что-то не так соптимизировал (кстати, с -O3 это бывает).</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 05 Feb 2015 10:19:45 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444258#p444258</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444254#p444254</link>
			<description><![CDATA[<p>Представьте себе, читал про static. Но без особой надобности я об этом не беспокоюсь.<br />Например, у меня редко бывает так, чтобы переменная из одного модуля была видна в другом.</p><p>И опять же не понимаю, как размещение объявлений переменных в одном месте может<br />влиять на надёжность и переносимость, а также, как это они могуть побиться, пока подпрограмма<br />не дойдёт до выхода. Компилятор отведёт им место в каком надо сегменте и они там и останутся.</p><p>Пётр.</p>]]></description>
			<author><![CDATA[null@example.com (Peter)]]></author>
			<pubDate>Thu, 05 Feb 2015 10:08:21 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444254#p444254</guid>
		</item>
		<item>
			<title><![CDATA[Re: Порок Ubuntu]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=444248#p444248</link>
			<description><![CDATA[<div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Сейчас нет надобности бороться за каждую ячейку памяти</p></blockquote></div><p>facepalm</p><p>Да при чём тут экономия?!&nbsp; <img src="https://linuxforum.ru/img/smilies/bu.gif" alt="bu" /> </p><p><strong>Речь о совместимости и о надёжности.</strong></p><p>Вам на это наплевать, потому ваш код тут работает, а там не работает.</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>а мне удобнее, чтобы все объявления были в одном месте.</p></blockquote></div><p>вам может и удобнее, а компилятору приходится тащить их через весь код. Иногда они бьются на своём длинном и извилистом пути(из-за -O3).</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Вчера я в Debian искал, где определяется size_t</p></blockquote></div><p>зачем? Всё что вам нужно знать о size_t, то только то, что размер size_t достаточный для сохранения длинны _любого_ объекта в памяти. Всё. Сколько оно на самом деле — не имеет никакого значения, и ваш код <strong>обязан работать</strong> даже если size_t это char, и не бывает размера больше 127 байтов.</p><p>Для интерфейса с сокетами size_t не подходит, там свой стандарт, потому определён специальный тип socklen_t. И да, каст int ←→ size_t/socklen_t в общем случае UB, т.е. <strong>если ваш код отформатирует ваш HDD, в этом не будет ничего удивительного</strong>.</p><div class="quotebox"><cite>Peter пишет:</cite><blockquote><p>Глобальных переменных я по возможности избегаю, но, если переменная требуется во многих подпрограммах в одном модуле,<br />то всё же удобнее сделать её глобальной.</p></blockquote></div><p>почитайте хотя бы про static.&nbsp; Если &quot;в одном модуле&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 05 Feb 2015 09:45:11 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=444248#p444248</guid>
		</item>
	</channel>
</rss>
