Документация на тему архитектуры языка PHP скудна и разрозненна, несмотря на то что тема интересна многим. В моем докладе я постараюсь заполнить этот пробел и рассказать о модулях PHP: как они работают, зачем и как их пишут. В процессе мы рассмотрим опыт Badoo в этой сфере на примерах двух модулей. И еще напишем очень небольшой собственный модуль.
— Что такое модули PHP, как они работают
— Как начать писать свой модуль PHP
— Скелет модуля — Функции, классы, методы
— Разбор параметров функции
— Сборка модуля
— Подгрузка модуля
— Простой пример модуля из Badoo
— Сложный пример модуля из Badoo
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Yandex
Из этого доклада вы узнаете, как разбирать различные ошибки сборки C++, как их исправлять и что для этого нужно знать.
Речь пойдет о стадиях сборки программы на C++ и о том, как устроены объектные файлы (на примере формата ELF), о работе компилятора и компоновщика, а также особенностях, связанных со спецификой языка. В заключительной части доклада будут разобраны принципы работы препроцессора C++ и способы его отладки.
Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
ЛЕКЦИЯ 4. Стандарт POSIX Threads. Реентерабельность функций. Обработка сигналов. Локальные данные потоков. Принудительное завершение потоков. Шаблоны программирования с использованием потоков
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2014
Сибирский государственный университет телекоммуникаций и информатики
преподаватель:
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
Нас окружает мир сетей, мобильных устройств, сайтов, облаков. Чтобы работать с этим миром, придумано невероятное количество технологий и языков программирования. Есть ли среди них место для языков Си/Си++? Стоит ли тратить время на их изучение, стоит ли использовать их в своих проектах? Не пора ли этим языкам на пенсию? Эти темы в своем докладе обсудит Андрей Карпов, активно участвующий в жизни сообщества Си++-программистов. Забегая вперед можно утверждать - языки Си/Си++ живее всех живых. Андрей расскажет о развитии языка и новых возможностях, появившихся в Си++11. Многие возможности существенно облегчают работу программиста и сокращают объем кода.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
Дмитрий Прокопцев "Memory-mapped storage: ещё один подход к сериализации данных"Yandex
В докладе пойдёт речь о методе сериализации произвольных данных, который применяется в Яндексе. Этот метод основан на отображаемых в память (mmapped) файлах и не требует операции декодирования. Мы рассмотрим его преимущества и недостатки, поговорим об общих принципах такой сериализации и об устройстве отображаемых аналогов стандартных контейнеров.
The document discusses Code First, an approach in Entity Framework for modeling databases. It covers creating classes to represent database tables, adding attributes for additional database control, creating a DbContext class, initializing the database using an initializer, and provides demos of these concepts.
This document introduces Adam Tuliper and Christopher Harrison from Microsoft and provides an overview of their session on implementing Entity Framework with MVC. The session will cover introducing Entity Framework, beginning code first development, managing relationships and transactions, and integrating additional features. Attendees will learn how to use Entity Framework to access and manage data in an MVC application.
2. Что такое файл?
Файлом можно назвать месторасположение потоков битов.
Он может быть находиться в одном месте или в нескольких
местах, но он представляется одним потоком.
3. Что такое поток?
Поток не связан с железом, это линейная очередь которая
связывает файл с программой посредством которого возможно
передавать данные в оба направления. Таким образом, он не
зависит от устройства которое мы используем.
Мы также можем определить поток как источник данных.
Этим источником могут быть
(a) Файл
(b) Жесткий диск, флеш накопитель, CD, DVD и т.д.
(c) Другие устройства ввода/вывода (принтер, дисплей и т.д.)
В языке С существуют два типа потока.
(a) Текстовые потоки
(b) Бинарные (двоичные) потоки
4. Что такое буфер?
Буфер – это техника, которая позволяет уменьшить
количество вызовов ввода/вывода.
6. Открытие файла
• Файл должен быть“открыт” перед тем, как выполнять
операции ввода/вывода
FILE *fp;
:
fp = fopen (filename, mode);
o fp объявление указателя на тип данных FILE.
o filename это строка, указывающая на путь и имя файла.
o fopen возвращает указатель на файл.
o mode это строка, которая указывает на цель открытия
файла:
“r” :: только для чтения
“w” :: только для записи
“a” :: для добавление данных в файл
“rb” :: только для чтения в бинарном режиме
“wb” :: только для записи в бинарном режиме
“ab” :: для добавление данных в файл в бинарном
режиме
“r+” :: открытие для чтения и записи
“w+” :: для записи, если нет, то создает
7. Закрытие файла
• После того, как все операции с файлом
были выполнены, он должен быть закрыт
o Обеспечив это все данные, которые находятся в буфере памяти будут
соответственно записаны в файл.
• Общий формат: fclose (file_pointer) ;
FILE *xyz ;
xyz = fopen (“test”, “w”) ;
…….
fclose (xyz) ;
9. Операции чтения/записи в файл.1
• Простые функции чтения/записи getc и putc.
• getc используется для чтения очередного
символа из файла и возвращает его.
char ch; FILE *fp;
…..
ch = getc (fp) ;
o getc возвратит маркер EOF, когда конец файла будет
достигнут.
• putc используется для записи символа в файл.
char ch; FILE *fp;
……
putc (c, fp) ;
10. Операции чтения/записи в файл.2
• Функции чтения/записи fgets и fputs.
• fgets считывает строку начиная с текущей позиции.
FILE *fp;
…..
char *fgets( char *string, int max_count, FILE *fp) ;
o функция возвращает считанную строку, если произошла
ошибка или достигнут конец файла возвращается 0.
• fputs записывает строку в файл, начиная с текущей
позиции.
FILE *fp;
……
int fputs( const char *string, FILE *stream )
o если функция отрабатывает успешно из неё возвращается
неотрицательное значение. При ошибке возвращается
EOF.
11. Операции чтения/записи в файл.3
• Функции чтения/записи fread и fwrite.
• fread считывает данные из файла в буфер.
size_t fread( void *buffer, size_t size, size_t count, FILE *fp) ;
o buffer - адрес массива, куда запишутся данные
o size - размер элемента массива в байтах
o count - максимальное количество элементов для считывания
• fwrite записывает массив данных в файл.
size_t fwrite( const void *buffer, size_t size, size_t count, FILE
*fp);
12. Операции чтения/записи в файл.4
• Мы также можем использовать файловые
версии функций scanf и printf, называемые fscanf
и fprintf.
• Общий формат:
fscanf (FILE *pf, char *string, list) ;
fprintf (FILE *fp, char *string, list) ;
• Пример:
fscanf (fp, “%d %s %f”, &roll, dept_code, &cgpa) ;
fprintf (out, “nThe result is: %d”, xyz) ;
13. Запись в файл
#include<stdio.h>
int main()
{
FILE *p;
p=fopen(“file1.txt","w");
if(p) {
printf("openedn");
fputs("hello i am a student",p);
}
else {
printf("not openedn");
exit(1);
}
fclose(p);
return 0;
}
14. Открыть файл в
программе по умолчанию
// мы можем открыть любой файл в программе
// которая связана с этим файлом
//Например- ppt,txt,jpg,mp3 etc.
#include<cstdlib>
main()
{
system(“D:abcdxyz.mp3");
}
Представленный код будет проигрывать файл xyz.mp3 в
Windows Media Player(программа по умолчанию)
Расположенный на диске D в папке abcd
15. Создание, Запись и
Чтение файла Вместе.1
//Эта программа демонстрирует создание, запись и чтение файла вместе
#include<cstdio>
int main()
{
FILE *fp;
char t;
//создание
fp=fopen("yashuu.txt","w");
if(fp) {
printf("createdn");
}
else {
printf("not createdn");
exit(1);
}
//запись
fputs("this is yashu", fp);
fcolse(fp);
16. Создание, Запись и
Чтение файла Вместе.2
//чтение
y=fopen("yashuu.txt","r");
if(fp) {
printf("openedn");
}
else {
printf("not openedn");
exit(1);
}
while((t=fgetc(y))!=EOF) {
//fgetc используется для чтение
//символа из файла
printf("%c",t);
}
fclose(y);
return 0;
}
17. Подсчет количества
символов в файле
#include<cstdio>
int main()
{
FILE *fp;
int count = 0;
char ch;
fp = fopen("hh.txt","r");
while(ch=fgetc(fp))!=EOF) {
count++;
}
printf("%d",count);
fclose(fp);
return 0;
}
18. Подсчет количества
строк в файле
#include<cstdio>
int main()
{
FILE *fp;
int count=0;
char buffer[256];
fp=fopen("yy.txt","r");
while(feof(fp)) {
fgets(buffer, 256, fp);
count++;
}
count++;
printf("%d",count);
fclose(fp);
return 0;
}
19. Подсчет количества
слов в файле
#include<cstdio>
int main()
{
int count=0;
char ch;
FILE *fp;
y=fopen("fight.txt","r");
while((ch=fgetc(fp))!=EOF) {
if(ch==32) {
count++;
}
}
count++;
printf("%d",count);
fclose(fp);
return 0;
}
20. Добавить данные в файл
#include<cstdio>
int main()
{
FILE *fp;
char a;
p=fopen("yashu65.txt","a");
if(fp) {
printf("openedn");
fputs("hello i m yashun",fp);
} else {
printf("not openedn");
exit(1);
}
fclose(fp);
return 0;
}
22. Введение в fseek().2
int fseek ( FILE *stream, int offset [, int whence] )
Параметры
• stream -- указатель на открытый файл.
• offset -- смещение, измеряемое в байтах от
начала файла.
• whence -- точка, от которой производится
смещение:
24. Введение в fseek().4
Возвращаемое значение
Функция возвращает значение 0, если указатель
файла успешно перемещен, и ненулевое
значение в случае неудачного завершения.
25. fseek() считать с 6й
позиции
#include <cstdio>
main ()
{
FILE *fp;
char c;
fp = fopen("file.txt","r");
fseek( fp, 5, SEEK_SET );
while((c=fgetc(fp))!=EOF)
{
printf("%c",c);
}
fclose(fp);
}
27. fseek() пример для
SEEK_SET.1
В примере использования файла ‘abc.txt’ содержащего
“abcdefghijklmnopqrstuvwxyz”
константа SEEK_SET используется для отсчета с начала файла
#include<cstdio>
#include<cstring>
main()
{
FILE *fp=fopen("abc.txt","r");
char b;
int i;
// пропускаем первые 5 символов используя цикл
for(i=0;i<5;i++) {
b=fgetc(fp);
}
31. fseek() пример для
SEEK_END
В примере использования файла ‘abc.txt’ содержащего
“abcdefghijklmnopqrstuvwxyz”
SEEK_END устанавливает указатель в конец файла
#include<сstdio>
#include<сstring>
main()
{
FILE *fp=fopen("abc.txt","r");
char b;
fseek(y,-10,SEEK_END);
b=fgetc(y);
printf("%c",b);
}
Вывод программы – q
-10 значит 10-ая позиция с конца, которая есть ‘q’.
32. Пример для ftell()
#include <сstdio>
main ()
{
FILE *fp;
char c;
fp = fopen("file.txt","r");
fseek( fp, 5, SEEK_SET );
while((c=fgetc(fp))!=EOF)
{
printf("%c - position : %dn",c,ftell(fp));
}
fclose(fp);
}
33. Считывание числа из
файла
#include<сstdio>
main()
{
FILE *p;
int sum=0,number;
p=fopen("kl.txt","r");
if(p==NULL) {
printf("file not opened ");
} else {
while(!feof(p)) {
fscanf(p,"%d",&number);
printf("%dn",number);
sum=sum+number;
}
printf("%d",sum);
fclose(p);
}
}