Рубрика «user»
Нормальный человек: миф, на котором держится дизайн
2025-06-18 в 18:01, admin, рубрики: accessibility, Designer, usabilitylab, user, дизайн, доступность, инклюзия, интерфейсы, пользователь, юзабилитиРазработка SELinux-модуля для пользователя
2017-02-23 в 20:53, admin, рубрики: CentOS, linux, policy_module, selinux, setenforce 1, user, информационная безопасность, Разработка под LinuxЭто вторая статья из цикла
Сегодня мы поговорим о SELinux-пользователях, их создании, привязке, правам и другим вещам.
Зачем это делать? Есть много причин. Для меня главной причиной было выдать доступ для техподдержки для рутинных операций (таких как ребут, чистка логов, диагностика итд), но без доступа к критичным данным и изменению системных функций.
Предположения
В тексте будет содержаться много технической информации, поэтому автор предполагает, что читатель:
- Прочитал прошлую статью
- Имеет под рукой CentOS 7
- На котором установлены пакеты setools-console, policycoreutils-devel, selinux-policy-devel, policycoreutils-newrole
- И включен SELinux в режиме enforcing с политикой targeted или minimum
Это все про вас? Тогда поехали!Читать полностью »
UX-дизайн в мобильном приложении: запрос об оценке приложения
2016-07-10 в 20:18, admin, рубрики: Designer, UI, usability, usability tests, user, UX, web, веб-дизайн, дизайн мобильных приложений, интерфейсы, юзабилити
«Оцените это приложение!» Этим всплывающим диалоговом окном уже никого не удивишь, каждый день оно попадается мне на глаза. Подобные запросы сильно раздражают во многих мобильных приложениях:

Данный ленивый подход раскритикован Джоном Грубером, вот что он сказал о Daring Fireball:
evalidate: безопасная обработка пользовательских выражений
2015-01-20 в 17:45, admin, рубрики: AST, compile, eval, evalidate, python, security, user, информационная безопасностьЗачем нужно
Различная фильтрация есть везде. Например, файрволл 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)
Скрипт исправления даты установки пароля пользователя в AD
2013-12-12 в 11:34, admin, рубрики: active directory, password, powershell, user, системное администрирование, метки: active directory, password, powershell, user Всем привет!
Иногда возникает ситуация, когда надо пользователю изменить дату установки пароля в Active Directory. Представляю скрипт. Наверняка многим пригодится.
# Основной скрипт изменения даты установки пароля по файлу или по учетной записи пользователя.
# Автор Лужин Кирилл
# luzhin.kirill@yandex.ru
Add-PSSnapin Quest.ActiveRoles.ADManagement;
$gsFilename = "c:scriptpsset-ADUserPswDate.txt";
$giRows = (Get-Content -LiteralPath $gsFilename).Count;
$giX = 0;
$giMinimumSleep = 218;
$giMaximumSleep = 884;
$gtBeginDay = "08:00:00";
$gtEndDay = "19:00:00";
$today_date = Get-date -Format "dd.MM.yyyy";
function set-password($lsAccount) {
Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=0} | Out-Null;
Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=-1} | Out-Null;
}
function get-password($lsAccount) {
get-qaduser $lsAccount -IncludedProperties pwdLastSet | % {$lsPwdLastSet = $_.pwdLastSet;}
$lsPwdLastSet = $lsPwdLastSet.AddHours(3);
$lsPwdLastSetNorm = get-date -uformat '%d.%m.%Y %R' -Date $lsPwdLastSet;
return $lsPwdLastSetNorm;
}
function send-eMail($to,$toCc,$text="",$subject="Изменение даты установки пароля",$toBcc="admin3@domain.com") {
write-host "Кому: $to | тема: $subject | текст: $text";
$Enc = [Text.Encoding]::UTF8;
Send-MailMessage -to $to -from "admin1@domain.com" -Bcc $toBcc -Cc $toCc -subject $subject -smtpServer MAIL-SRV -BodyAsHtml $text -Encoding $Enc;
}
function get-sleepRandom($liMinimum, $liMaximum) {
$giSleep = Get-Random -minimum $liMinimum -maximum $liMaximum
# $giSleep = 30;
$giSleepS = $giSleep % 60;
$giSleepM = $giSleep - $giSleepS;
$giSleepM = $giSleepM / 60;
$gdFuture = (Get-Date).AddSeconds($giSleep);
write-host "Ждем"$giSleepM" минут "$giSleepS" секунд (будет выполнен "$gdFuture")...";
Start-Sleep -Seconds $giSleep
}
function isAtWork($ltBegin, $ltEnd) {
$lbAtWork = $FALSE;
$giDayOfWeek = (get-date).DayOfWeek.ToString('d');
if (($giDayOfWeek -gt 0) -and ($giDayOfWeek -lt 6)) {
$today_date_full = $today_date + " " + $ltBegin;
$today_date_full2 = $today_date + " " + $ltEnd;
write-host $today_date_full" - "$today_date_full2;
$a=[datetime]::parse($today_date_full);
$c=[datetime]::parse($today_date_full2);
$b = get-date;
if (($b -gt $a) -and ($b -lt $c)) {
write-host $b". Время позже 8:00 и раньше 19:00, пользователь может поменять пароль!";
$lbAtWork = $TRUE;
} else {
write-host "Время раньше 8:00 или позже 19:00, пользователь не может поменять пароль.";
}
} else {
write-host "Сегодня выходной, пользователя нет на работе.";
}
return $lbAtWork;
}
function update-password_wReport($lsAccount) {
write-host " ";
write-host "*"$lsAccount;
$gbAtWork = isAtWork $gtBeginDay $gtEndDay;
if ($gbAtWork) {
$gsPwdLastSet = get-password $lsAccount;
$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td>";
set-password $lsAccount;
$gsPwdLastSet = get-password $lsAccount;
$lsText = $lsText + "<td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td></tr>";
} else {
$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>Нет на работе</td><td style='border:1px solid RGB(200,200,200);'></td></tr>";
}
return $lsText;
}
$gsText = $gsText + "<table style='border-collapse:collapse; width:500px; font-family:Tahoma,Arial,Calibri;font-size:10pt;'>";
$gsText = $gsText + "<tr><td style='width:40%; border:1px solid RGB(200,200,200); text-align:center;'>Учетная запись</td>";
$gsText = $gsText + "<td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Было</td><td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Стало</td></tr>";
if ($ARGS[0] -ne $Null) {
$gsText = $gsText + (update-password_wReport $ARGS[0]);
} else {
Get-Content -LiteralPath $gsFilename |
% {
$gsText = $gsText + (update-password_wReport $_);
$giX = $giX + 1;
if ($giX -lt $giRows) {
get-sleepRandom $giMinimumSleep $giMaximumSleep;
}
}
}
$gsText = $gsText + "</table>";
if ($ARGS[1] -ne $Null) {
send-eMail $ARGS[1] "admin1@domain.com" $gsText;
} else {
send-eMail "admin1@domain.com" "admin2@domain.com" $gsText;
}
Под катом описание, использование и особенности.
Читать полностью »
В django появилась возможность использования своей модели вместо contrib.auth.models.User
2012-09-28 в 1:15, admin, рубрики: django, user, метки: Django, user 
Через шесть лет после появления тикета с предложением возможности использования своей модели вместо штатной django.contrib.auth.models.User и тысяч постов с идеями использования дополнительной модели профилей случилось чудо: https://github.com/django/django/commit/70a0de37d132e5f1514fb939875f69649f103124


