Именованные аргументы функции в C

Автор: admin от 20-01-2015, 23:54, посмотрело: 517

В некоторых языках существует возможность вызова функции с именованными параметрами. Такой способ позволяет указать аргумент для определённого параметра, связав его с именем параметра, а не с позицией. Это возможно, например, в C# или Python.

Рассмотрим «игрушечный» пример на Python с использованием именованных аргументов:

#вычислим объем параллелепипеда
#если значение стороны не указано, то считаем что оно равно единице
def volume(length=1, width=1, height=1): 
  return length * width * height; 
print(volume())                            # V = 1 
print(volume(length=2))                    # V = 2 
print(volume(length=2, width=3))           # V = 6 
print(volume(length=2, width=3, height=4)) # V = 24

Здесь в примере одна и та же функция вызывается с разными аргументами. И видно, какой параметр каким значением проинициализирован. Если у функции есть параметры, значения которых можно оставить по умолчанию, то очень удобно проинициализировать только необходимые параметры с помощью именованных аргументов. Но в языке C аргументы функции связаны с позицией, поэтому разработчику нужно помнить порядок следования параметров, что может быть неудобно, если их достаточно много.

Ниже я покажу, как можно сымитировать использование именованных аргументов в C.

Категория: Программирование, Веб-разработка

 

Объемные планеты в 2D через шейдер

Автор: admin от 20-01-2015, 23:28, посмотрело: 1184

А помните, как вы просили меня про шейдеры написать? Помните? Нет? А вот я помню и даже написал. Милости просим, поговорим о прекрасном.

Сегодня я поведу речь о том, как я делал объемные вращающиеся планеты для нашей игры blast-off. Тоесть они, конечно, совершенно плоские, всего пара треугольников, но выглядят как объемные.

Объемные планеты в 2D через шейдер

Заинтересовало? Прошу под кат. Картинок прилично.

Категория: Программирование » Game Development

 

Простой «железный» терминал

Автор: admin от 20-01-2015, 23:19, посмотрело: 987

Данная статья является продолжением описания микроконтроллера на процессоре 6502 «Аюша». В ней мы рассмотрим, как превратить контроллер в полноценный компьютерный комплект, причём в качестве основы не обязательно делать «Аюшу», сойдёт любой иной девайс. Ну или применим собранный терминал для чего-нибудь ещё. И опять же, для сборки будет применён «подножный корм»…

Простой «железный» терминал

Категория: Железо » Сделай Сам

 

Обработка custom-жестов для Leap Motion. Часть 1

Автор: admin от 20-01-2015, 22:34, посмотрело: 515

Всем привет!

На время праздников мне в руки попал сенсор Leap Motion. Довольно давно хотел поработать с ним, но основная работа и бесполезное времяпрепровождение сессия не позволяли.

Когда-то, лет 10 назад, когда я был школьником и ничем не занимался, я покупал журнал «Игромания», в комплекте с которым поставлялся диск с всякими игровыми интересностями и shareware-софтом. И в этом журнале была рубрика о полезном софте. Одной из програм оказался Symbol Commander — утилита, позволяющая записывать движения мышью, распознавать записанные движения и при распознавании выполнять действия, назначенные на это движения.

Сейчас, при развитии бесконтактных сенсоров (Leap Motion, Microsoft Kinect, PrimeSence Carmine) возникла идея повторить подобный функционал для одного из них. Выбор пал на Leap Motion.

Категория: Программирование

 

#yotamobile или как из лояльного пользователя стать хейтером

Автор: admin от 20-01-2015, 22:03, посмотрело: 520

Когда мои проблемы с оператором Yota длились уже не первый месяц и я успел достать всех в твиттере — мне показали пост Двойной MNP (МегаФон – Yota – МегаФон), и я понял, что далеко не уникален.

С чего же все началось? Услышав о появлении мобильного оператора с «плоскими» тарифами я сразу же заинтересовался — ведь это то, чего мы так долго ждали и о чем говорили большевики. Я немного сомневался, но прочитав впечатления друзей, все-таки решил попрощаться с Мегафоном и стать одним из первых пользователей нового модного оператора.

25 августа со второй попытки я получил SIM-карту и оформил заявление на MNP. Дату переноса назначили на 3 сентября. Все прошло корректно, я бы даже не истерил по поводу отсутствия входящей связи, если бы внимательно прочитал полученные СМС.

Впечатлившись отзывчивостью саппорта в вопросах входящих звонков с Tele2, я вспомнил о наболевшем: еще в далеком 2008 году, будучи владельцем Sony Ericsson W800i, я удивлялся, почему возвращаясь из зарубежной поездки, телефон не хотел менять обратно часовой пояс. Тогда, после недолгого рисерча оказалось, что российские операторы очень далеки от технологий мобильной связи и попросту не знают (или не хотят использовать) механизм NITZ который является необязательной частью GSM стандарта аж с 1996 года и поэтому предлагают менять часовой пояс вручную. В далеком 2010 году я уже безуспешно поднимал этот вопрос, будучи клиентом Мегафона, Yota ушла не далеко — думаю, понятно почему.

18 сентября всплыла еще одна проблема — я не мог дозвониться по городскому номеру до любимого Zoom Cafe. Как выяснилось чуть позже, заявку тогда составить забыли — пришлось писать повторно и требовать номер тикета. Привычки присваивать номер любому обращению и, главное, добровольно сообщать его пользователю у саппорта нет. Тут также не работает стандартная схема: напиши на имейл — получи номер тикета в автоматическом реплае. Была ли решена проблема через 4 месяца? Нет.

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

Категория: Админитстрирование » Сетевые технологии

 

Unity 4.5 для самых маленьких — работа со звуком (урок)

Автор: admin от 20-01-2015, 21:36, посмотрело: 1097

Вместо предисловия.
Микширование в Unity 5.0 через AudioMixer это, наверное, очень круто.
Но мне нужно было решение здесь и сейчас (на тот момент — в 4.5.2f1).


Задач было три:


  • 1а. Плавное затухание эмбиента (или саундтрека, если хотите) предыдущего уровня при переходе на следующий.
    1б. Далее, звук удаляется через заданное количество времени.

  • 2. Плавное возникновение (усиление громкости звука от 0 до 1) эмбиента после загрузки уровня.

  • 3. Программное микширование эмбиента с самим собой — т.е. музыка, за ~10 секунд до своего финала, должна плавно затухать и плавно переходить с усилением в собственное начало.
    Другими словами — «программный» луп (закольцованность) на лету.


Категория: Программирование » Game Development

 

evalidate: безопасная обработка пользовательских выражений

Автор: admin от 20-01-2015, 20:45, посмотрело: 591

Зачем нужно


Различная фильтрация есть везде. Например, файрволл netfilter (iptables) имеет свой синтаксис для описания пакетов. В файле .htaccess апача свой язык, как определять, кому давать доступ к каталогу, кому нет. В СУБД свой очень мощный язык (SQL WHERE ...) для фильтрации записей. В почтовых программах (thunderbird, gmail) — свой интерфейс описания фильтров, в соответствии с которыми письма будут раскидываться по папкам.

И везде — свой велосипед.

Для бухгалтерской программы вам может быть удобно позволить пользователю выбрать, кому будет повышена зарплата (все женщины, а так же мужчины возрастом от 25 до 32 лет, либо же до 50 лет если у мужчины имя Вася). И каждому подходящему повысить по пользовательскому выражению ( + 2000 рублей + 20% от прежней зарплаты + по 1000 рублей за каждый год стажа)

Для интернет-магазина (или его админки) — найти все ноутбуки, с памятью от 4 до 8 Gb, которых на складе более 3 штук, но не Acer, или даже Acer, если стоят меньше 30 000 рублей.

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

src="(RAM>=4 and RAM<=8 and stock>3 and not brand=='Acer') or (brand=='Acer' and price<30000)"
success, result = evalidate.safeeval(src,notebook)

Категория: Информационная безопасность

 

Еще раз о Hyper-Threading

Автор: admin от 20-01-2015, 19:43, посмотрело: 618

Было время, когда понадобилось оценить производительность памяти в контексте технологии Hyper-threading. Мы пришли к выводу, что ее влияние не всегда позитивно. Когда появился квант свободного времени, возникло желание продолжить исследования и рассмотреть происходящие процессы с точностью до машинных тактов и битов, используя программное обеспечение собственной разработки.

Категория: Программирование

 

ПЛК100 + LabVIEW + джойстик

Автор: admin от 20-01-2015, 18:41, посмотрело: 802

Однажды на моём рабочем столе оказались usb-джойстик и ПЛК (программируемый логический контроллер) фирмы ОВЕН — ПЛК100, при этом на компьютере была запущена среда LabVIEW. Я подумал, что всё это — хотя бы забавы ради — можно объединить, организовав управление ПЛК (его выходами) с помощью кнопок джойстика (позже я решил использовать не просто кнопки, а их комбинации — ВНИЗ, ВПЕРЁД, Y, например).

Категория: Программирование

 

Не все антивирусы одинаково полезны: вебинар Сергея Гордейчика и Владимира Кропотова

Автор: admin от 20-01-2015, 18:02, посмотрело: 318

На днях в «Нью-Йорк таймс» опубликовали статью о том, как были получены доказательства причастности Серверной Кореи к массированной атаке на корпорацию Sony. Специалисты Агентства национальной безопасности США еще в 2010 году взломали компьютерные сети КНДР и тайно наблюдали за активностью северокорейских хакеров.

Помимо источников в спецслужбах эту версию подтверждают и документы, ранее обнародованные Эдвардом Сноуденом в журнале «Шпигель». Сотрудникам АНБ удалось внедриться в китайские сети, которые связывают интернет Серверной Кореи с остальным миром, и распространить вредоносную программу среди местных хакерских группировок.

Не все антивирусы одинаково полезны: вебинар Сергея Гордейчика и Владимира Кропотова


По сведениям «Нью-Йорк таймс», специалисты АНБ наблюдали за первыми фишинговыми атаками на Sony, когда был украден пароль одного из системных администраторов корпорации, что стало отправной точкой внедрения.

Категория: Программирование, Веб-разработка, Информационная безопасность

 
Назад Вперед