Перебор комбинаций 0 и 1 в битах

Задача: вычислить все возможные комбинации 0 и 1 в битовом числе.

Решение: применим комбинаторику. Реализовано аж в двух языках 😉

Pyhon:

n=int(input("n="))
res=[]
for i in range(2**n):
    s=""
    for j in range(n):
        s=str(i%2)+s
        i=i//2
    res.append(s)
print(res)

PHP:

$n=5;
$res=[];
for ($i = 1; $i <= 2**$n; $i++) {
    $s="";    
    $z=$i;
    for ($j = 1; $j <= $n; $j++) {
      $s=(string)($z%2).$s;      
      $z=intdiv($z,2);      
    };  
    $res[]=$s;
}
var_dump($res);

JQGrid Free: вставка html в ячейку

Свободная редакция слегка отличается от не свободной. А потому вставка кода HTML в ячейку осуществляется несколько по иному:

                    {name:'deleted',       index:'deleted',fixed:true,width:15,search: false,editable:false,
                        formatter: function(cellvalue, options, rowobject){
                            if (cellvalue==true){
                                return '<i class="fas fa-times"></i>'; 
                            } else {
                                return "";
                            };
                            
                      }},  

Получается что то вроде:

SQL: выборка последних значений по дате из БД

Задача: в таблице хранятся тарифы «сплошным навалом», необходимо вытащить последние значения всех тарифов.

Решение:

select 
reg_tarifs.date as dttime,
reg_tarifs.tarif as tarif,
reg_tarifs.zone as zone_num,
enum_zones.name as tarzone
from reg_tarifs
inner join enum_zones on enum_zones.id=reg_tarifs.zone
inner join 
(select 
  max(date) as maxdt,zone 
from reg_tarifs
where ezs=5
group by  zone 
) as max
on max.maxdt=reg_tarifs.date and max.zone=reg_tarifs.zone

PHP: отправка почты через сервер Microsoft Exchange

Минут 20 пришлось подбирать параметры, чтобы письма пошли. Получился примерно такой класс (с использованием PHPMailer).

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

class TMail {
   public static function SendMail($to,$title,$body){
    global $db;
    $answer=AnswerStruc(true,"Не удалось отправить почту");
    $mail = new PHPMailer(true);
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      
    $mail->isSMTP();                                                
    $mail->Host       = TConfig::GetConfigKeyValue("mail_server");
    $mail->SMTPAuth   = true;                                  
    $mail->Username   = TConfig::GetConfigKeyValue("mail_server_login");
    $mail->Password   = TConfig::GetConfigKeyValue("mail_server_password");
    //$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;           
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->Port       = TConfig::GetConfigKeyValue("smtp_port");                                   
    $mail->SMTPAuth = true;
    
    $mail->SMTPOptions = array(
        'ssl' => array(
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true
        )
    );    
    
    $mail->setFrom(TConfig::GetConfigKeyValue("mail_server_sender"));
    $mail->addAddress($to);

    $mail->isHTML(true);                                
    $mail->Subject = $title;
    $mail->Body    = $body;    
    
    if (!$mail->send()) {
        $answer=AnswerStruc(true,$mail->ErrorInfo);
    } else {
        $answer=AnswerStruc(false,"Ok");
    }
    return $answer;
   }   
}

PostgreSQL: расстояние между двумя координатами в метрах

Можно добавить функцию вида:

CREATE OR REPLACE FUNCTION public.distance(
	lat1 double precision,
	lon1 double precision,
	lat2 double precision,
	lon2 double precision)
    RETURNS double precision
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
    R integer = 6371e3; -- Метры
    rad double precision = 0.01745329252;

    f1 double precision = lat1 * rad;
    f2 double precision = lat2 * rad;
    df double precision = (lat2-lat1) * rad;
    dl double precision = (lon2-lon1) * rad;

    a double precision = sin(df/2) * sin(df/2) + cos(f1) * cos(f2) * sin(dl/2) * sin(dl/2);
    c double precision = 2 * atan2(sqrt(a), sqrt(1-a));    
BEGIN                                                     
    RETURN R * c;        
END
$BODY$;
1 80 81 82 83 84 299