- 1
- 2
- 3
https://vk.com/board1844826
Языковые "PHP"-файлы "ВКонтакте" в первые годы его существования.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://vk.com/board1844826
Языковые "PHP"-файлы "ВКонтакте" в первые годы его существования.
+1
#include <experimental/coroutine>
#include <iostream>
#include <optional>
#include <utility>
template<typename T>
class Maybe
{
std::shared_ptr<std::optional<T>> m_maybe = std::make_shared<std::optional<T>>();
public:
Maybe() = default;
Maybe(const T& t)
: m_maybe { std::make_shared<std::optional<T>>(t) }
{
}
explicit operator bool() const { return static_cast<bool>(*m_maybe); }
T& operator* () { return **m_maybe; }
const T& operator*() const { return **m_maybe; }
void reset() { m_maybe->reset(); }
template<typename U>
void emplace(U&& u) { m_maybe->emplace(std::forward<U>(u)); }
};
template<typename T>
void printMaybe(const Maybe<T>& opt)
{
if (opt)
std::cout << *opt << std::endl;
else
std::cout << "<empty>" << std::endl;
}
template<typename T, typename... Args>
struct std::experimental::coroutine_traits<Maybe<T>, Args...>
{
struct promise_type
{
Maybe<T> m_maybe;
auto get_return_object() { return m_maybe; }
std::experimental::suspend_never initial_suspend() { return {}; }
std::experimental::suspend_never final_suspend() { return {}; }
void unhandled_exception() { m_maybe.reset(); }
template<typename U>
void return_value(U&& u) { m_maybe.emplace(std::forward<U>(u)); }
};
};
template<typename T>
auto operator co_await(const Maybe<T>& maybe)
{
struct Awaiter
{
const Maybe<T>& input;
bool await_ready() { return static_cast<bool>(input); }
auto await_resume() { return *input; }
void await_suspend(std::experimental::coroutine_handle<> coro) { coro.destroy(); }
};
return Awaiter { maybe };
}
Maybe<int> maybeAdd(const Maybe<int>& maybeA, const Maybe<int>& maybeB)
{
auto a = co_await maybeA;
auto b = co_await maybeB;
co_return a + b;
}
int main()
{
/*
printMaybe(maybeAdd({ 1 }, { 2 }));
printMaybe(maybeAdd({}, { 2 }));
printMaybe(maybeAdd({ 1 }, {}));
*/
const auto res = maybeAdd({ 1 }, { 2 });
return res ? *res : 0;
}
do-нотация в плюсах
0
// Определим тип возвращаемого результата
РезультатМассив = ?(ВРег(ТипРезультата)="МАССИВ",Истина,Ложь);
РезультатСписок = ?(ВРег(ТипРезультата)="СПИСОКЗНАЧЕНИЙ",Истина,Ложь);
РезультатСтруктура = НЕ РезультатМассив И НЕ РезультатСписок;
Если РезультатСтруктура Тогда
Измерения = Новый Структура;
КонецЕсли;
Если РезультатМассив Тогда
Измерения = Новый Массив;
КонецЕсли;
Если РезультатСписок Тогда
Измерения = Новый СписокЗначений;
КонецЕсли;
Если МассивИсключений = Неопределено Тогда
МассивИсключений = Новый Массив;
КонецЕсли;
А еще вот так можно проверить тип значения
−2
#define POLY 0x8408
/*
// 16 12 5
// this is the CCITT CRC 16 polynomial X + X + X + 1.
// This works out to be 0x1021, but the way the algorithm works
// lets us use 0x8408 (the reverse of the bit pattern). The high
// bit is always assumed to be set, thus we only use 16 bits to
// represent the 17 bit value.
*/
unsigned short crc16(unsigned char *data_p, size_t length)
{
unsigned char i;
unsigned int data;
if ( length == 0 ) return 0;
unsigned int crc = 0xFFFF;
do
{
data = *data_p++;
for ( i=0; i < 8; i++ )
{
if ( (crc ^ data) & 1 )
crc = (crc >> 1) ^ POLY;
else
crc >>= 1;
data >>= 1;
}
} while ( --length != 0 );
crc = ~crc;
data = crc;
crc = (crc << 8) | ((data >> 8) & 0xff);
return (unsigned short)(crc);
}
Типичный пример непортабельной хуйни на Си.
−1
function timeAgo($time_ago)
{
$time_ago = strtotime($time_ago);
$cur_time = strtotime(date('Y-m-d H:i:s'));
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed;
$minutes = round($time_elapsed / 60);
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400);
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640);
$years = round($time_elapsed / 31207680);
if ($seconds <= 60) {
echo "$seconds seconds ago";
} else {
if ($minutes <= 60) {
if ($minutes == 1) {
echo "one minute ago";
} else {
echo "$minutes minutes ago";
}
} else {
if ($hours <= 24) {
if ($hours == 1) {
echo "an hour ago";
} else {
echo "$hours hours ago";
}
} else {
if ($days <= 7) {
if ($days == 1) {
echo "yesterday";
} else {
echo "$days days ago";
}
} else {
if ($weeks <= 4.3) {
if ($weeks == 1) {
echo "a week ago";
} else {
echo "$weeks weeks ago";
}
} else {
if ($months <= 12) {
if ($months == 1) {
echo "a month ago";
} else {
echo "$months months ago";
}
} else {
if ($years == 1) {
echo "one year ago";
} else {
echo "$years years ago";
}
}
}
}
}
}
}
}
Отображает прошедшее время после публикации поста
0
НадоОтправить = Ложь;
НадоПолучить = Ложь;
Если Режим = РежимPOP3SMTP или Режим = РежимPOP3SMTPСсылка Тогда
Если Параметры.Свойство("АдресPOP3") и ЗначениеЗаполнено(Параметры.АдресPOP3) Тогда
НадоПолучить = Истина;
КонецЕсли;
Если Параметры.Свойство("АдресSMTP") и ЗначениеЗаполнено(Параметры.АдресSMTP) Тогда
НадоОтправить = Истина;
КонецЕсли;
ИначеЕсли Режим = РежимIMAP или Режим = РежимIMAPСсылка Тогда
Если Параметры.Свойство("АдресIMAP") и ЗначениеЗаполнено(Параметры.АдресIMAP) Тогда
НадоПолучить = Истина;
НадоОтправить = Истина;
КонецЕсли;
ИначеЕсли Режим = РежимIMAPSMTP или Режим = РежимIMAPSMTPСсылка Тогда
Если Параметры.Свойство("АдресIMAP") и ЗначениеЗаполнено(Параметры.АдресIMAP) Тогда
НадоПолучить = Истина;
КонецЕсли;
Если Параметры.Свойство("АдресSMTP") и ЗначениеЗаполнено(Параметры.АдресSMTP) Тогда
НадоОтправить = Истина;
КонецЕсли;
ИначеЕсли Режим = РежимВнешнийПочтовыйКлиент или Режим = РежимВнешнийПочтовыйКлиентСсылка Тогда
Если Параметры.Свойство("ИспользоватьOutlook") и Параметры.ИспользоватьOutlook = Истина Тогда
НадоОтправить = Истина;
НадоПолучить = Истина;
КонецЕсли;
Если Параметры.Свойство("ИспользоватьLotusNotes") и Параметры.ИспользоватьLotusNotes = Истина Тогда
НадоОтправить = Истина;
КонецЕсли;
КонецЕсли;
Если Параметры.Свойство("Отправка") Тогда
ЗначениеСравнения = ЗначениеИзСтрокиВнутр(Параметры.Отправка);
Если ЗначениеСравнения = Истина Тогда
НадоОтправить = Истина;
Иначе
НадоОтправить = Ложь;
КонецЕсли;
КонецЕсли;
Если Параметры.Свойство("Получение") Тогда
ЗначениеСравнения = ЗначениеИзСтрокиВнутр(Параметры.Получение);
Если ЗначениеСравнения = Истина Тогда
НадоПолучить = Истина;
Иначе
НадоПолучить = Ложь;
КонецЕсли;
КонецЕсли;
Когда тебе платят за количество строк.
Обработка загрузка почтовых сообщений. Итилиум, редакция 4.5
−1
#include <iostream>
using namespace std;
/*Replace matricca's rows*/
int** inputMatr(int** arr, unsigned m, unsigned n){
for (unsigned i = 0; i < m; ++i)
for (unsigned j = 0; j < n; ++j)
cin >> arr[i][j];
return arr;
}
int** outputMatr(int** arr, int m, int n){
for (int i = 0; i < m; ++i){
for (int j = 0; j < n; ++j)
cout << arr[i][j] << " ";
cout << endl;
}
return arr;
}
int** allocateMatr(unsigned m, unsigned n){
int** p = new int*[m];
for (unsigned i = 0; i < m; ++i)
p[i] = new int[n];
return p;
}
int** swapRows(int** arr, unsigned m, unsigned n){
int** p = new int*[m];
for (unsigned i = 0; i < m; ++i){
p[i] = new int[n];
}
unsigned ai=m;
ai--;
for (unsigned i = 0; i < m/2; i++,ai--){
for (unsigned j = 0; j < n; j++){
p[i][j]= arr[i][j];
arr[i][j]=arr[ai][j];
arr[ai][j]=p[i][j];
}
}
return arr;
}
int main() {
int row,column;
cout << "Input size matr " << endl;
cin >> row >> column;
int** array = allocateMatr(row,column);
inputMatr(array,row ,column);
swapRows(array,row,column);
outputMatr(array, row ,column);
return 0;
}
Поменять строки матрицы(1ую с последней,вторую с предпоследней и т.д)
0
Пока админ возит свою мамку по клиентам, сайт загибается...
0
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int files_hidden = 0; int files_dirs = 0; int files_files = 0;
#define MEGA 1007
void nextDir(char *path, FILE *f, const char *verbose)
{
DIR *dir = opendir(path);
if(dir)
{
struct dirent *ent;
while((ent = readdir(dir)) != NULL)
{
if(strcmp(ent->d_name, ".") == 0) continue;
if(strcmp(ent->d_name, "..") == 0) continue; if(ent->d_name[0] == '.') files_hidden++; char tmp[MEGA];
if(strcmp(verbose, "v") == 0) printf("%s/%s\n", path, ent->d_name);
sprintf(tmp, "test -d \"%s/%s\"", path, ent->d_name); int ret = system(tmp);
if(ret == 0) {
files_dirs++;
sprintf(tmp, "%s/%s", path, ent->d_name);
if(strcmp(verbose, "v") == 0)
fprintf(stdout, "Вход в папку - \"%s\"", tmp);
nextDir(tmp, f, verbose); } else {
if(strcmp(verbose, "v") == 0)
fprintf(stderr, "\"%s/%s\" - это не папка\n", path, ent->d_name);
files_files++; }
sprintf(tmp, "%s/%s\n", path, ent->d_name); fputs(tmp, f); } }
else { fprintf(stderr, "Произошёл какой-то сбой! Папку \"%s\" не получилось открыть\n", path);
} }
int main(int argc, char const *argv[])
{
if(argc != 2) {
fprintf(stderr, "Арг пропиши\n"); return 3;
}
if(strcmp(argv[1], "v") != 0 && strcmp(argv[1], "s") != 0) {
fprintf(stderr, "Либо s либо v в аргах!\n"); return 4;
}
printf("Начинается сбор...\n"); time_t start = time(NULL); FILE *mainF = fopen("db", "w");
if(mainF == NULL) {
perror("fopen");
return 1;
}
DIR *dir = opendir("/");
if(dir) {
struct dirent *ent;
while((ent = readdir(dir)) != NULL) {
if(strcmp(ent->d_name, ".") == 0) continue; if(strcmp(ent->d_name, "..") == 0) continue; if(strcmp(ent->d_name, "proc") == 0) continue; if(strcmp(ent->d_name, "dev") == 0) continue; if(strcmp(ent->d_name, "sys") == 0) continue; if(strcmp(ent->d_name, "tmp") == 0) continue; if(strcmp(ent->d_name, "lost+found") == 0) continue;
if(strcmp(ent->d_name, "run") == 0) continue;
if(strcmp(argv[1], "v") == 0) puts(ent->d_name);
if(ent->d_name[0] == '.') files_hidden++;
char tmp[MEGA];
sprintf(tmp, "test -d \"/%s\"", ent->d_name);
int ret = system(tmp);
if(ret == 0) {
files_dirs++;
sprintf(tmp, "/%s", ent->d_name);
if(strcmp(argv[1], "v") == 0)
fprintf(stdout, "Вход в папку - \"%s\"\n", tmp);
nextDir(tmp, mainF, argv[1]);
}
else {
if(strcmp(argv[1], "v") == 0)
Пришлось строки многие подряд написать чтоб вместилось сюда!
Эта прога сканирует все файлы на линукс а пишет их в файл. И в конце ещё статистику выдаёт.
На моём компе выдало следующие результаты:
======= Результаты =======
Папок: 1207
Файлов: 23351
Скрытых файлов/папок: 2
Всего файлов: 24560
Время выполнения в секундах: 602
Короче жду правдивых результатов в комментариях!
А также критику, прога ещё недоделана и глюкает!
А утилиту test использует потому что если я сделал без неё прога вышла бы слишком сложной, а всё гениальное просто
+5
function ехал(f) { f(); }
function через(f) { f.call(null); }
function видит(f) { setTimeout(f, 0); }
function сунул(f) { Promise.resolve(null).then(f); }
function в(f) { alert("Hello functional world!"); return f; }
ехал(function() {
через(function() {
видит(function() {
(function(_function) {
сунул(function() {
_function(в(function() {}))
})
})(function(_function() {
_function(function() {})
})
})
})
})