V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  elfive  ›  全部回复第 55 页 / 共 137 页
回复总数  2740
1 ... 51  52  53  54  55  56  57  58  59  60 ... 137  
Apple TV 表示不服……
2021-01-08 09:39:47 +08:00
回复了 auto8888 创建的主题 问与答 IOS 有什么好用的节假日闹钟吗?
holidays.json

```
{"2020":{"holidays":{"01":[1,24,25,26,27,28,29,30],"04":[4,5,6],"05":[1,2,3,4,5],"06":[25,26,27],"10":[1,2,3,4,5,6,7,8]},"shift":{"01":[19],"02":[1],"04":[26],"05":[9],"06":[28],"09":[27],"10":[10]},"workdays":{"12":[19,26,27]},"restdays":{"12":[16,30,31]}},"2021":{"holidays":{"01":[1,2,3],"02":[11,12,13,14,15,16,17],"04":[3,4,5],"05":[1,2,3,4,5],"06":[12,13,14],"09":[19,20,21],"10":[1,2,3,4,5,6,7]},"shift":{"02":[7,20],"04":[25],"05":[8],"06":[28],"09":[18,26],"10":[9]},"workdays":{"01":[4]}}}
```
2021-01-08 09:39:09 +08:00
回复了 auto8888 创建的主题 问与答 IOS 有什么好用的节假日闹钟吗?
```
<?php
date_default_timezone_set('Asia/Shanghai'); // 设置默认时区
$cwd = dirname(__FILE__);
$config_file = $cwd . "/holidays.json"; // holidays:法定休息日、shift:法定调休日、workdays:公司调整工作日、restdays:公司调整休息日


function reply($result, $data) {
echo json_encode(array(
'result' => $result,
'data' => $data,
));
exit(0);
}

function read_holiday_config() {
global $config_file;
$config = false;
try {
$config = json_decode(file_get_contents($config_file), true);
} catch (Exception $e) {

} finally {
return $config;
}
}

function write_holiday_config($config) {
global $config_file;
$result = false;
try {
// $result = file_put_contents($config_file, json_encode($config, JSON_PRETTY_PRINT));
$result = file_put_contents($config_file, json_encode($config), LOCK_EX);
} catch (Exception $e) {

} finally {
return $result;
}
}

// $year(string), $month(string), $day(int)
function date_to_ymd($date) {
return array(substr($date, 0, 4), substr($date, 4, 2), intval(substr($date, 6, 2)));
}

function handle_query() {
$weekday_str = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
$weekday_num = [7, 1, 2, 3, 4, 5, 6];
$workday = [false, true, true, true, true, true, false];
$date = (isset($_REQUEST['date']) ? $_REQUEST['date'] : date('Ymd'));
$detail = isset($_REQUEST['detail']);

$holidays_json = read_holiday_config();

list($year, $month, $day) = date_to_ymd($date);

$week_index = date("w", strtotime($date));
$is_workday = $workday[$week_index];

// 法定休息日
$is_national_holiday = false;
if (isset($holidays_json[$year]['holidays'][$month]) &&
in_array($day, $holidays_json[$year]['holidays'][$month])) {
$is_national_holiday = true;
}

// 法定调休日
$is_national_shiftday = false;
if (isset($holidays_json[$year]['shift'][$month]) &&
in_array($day, $holidays_json[$year]['shift'][$month])) {
$is_national_shiftday = true;
}

// 公司调整工作日
$is_office_workday = false;
if (isset($holidays_json[$year]['workdays'][$month]) &&
in_array($day, $holidays_json[$year]['workdays'][$month])) {
$is_office_workday = true;
}

// 公司调整休息日
$is_office_restday = false;
if (isset($holidays_json[$year]['restdays'][$month]) &&
in_array($day, $holidays_json[$year]['restdays'][$month])) {
$is_office_restday = true;
}

$workday = ($is_office_workday ? true :
($is_office_restday ? false :
($is_national_shiftday ? true :
($is_national_holiday ? false : $is_workday))));

$result_array = array(
'date' => $date,
'week_num' => $weekday_num[$week_index],
'workday' => $workday
);
if ($detail) {
$result_array = array_merge($result_array, array(
'is_workday' => $is_workday,
'is_office_workday' => $is_office_workday,
'is_office_restday' => $is_office_restday,
'is_national_holiday' => $is_national_holiday,
'is_national_shiftday' => $is_national_shiftday,
'week_str' => $weekday_str[$week_index]
));
}

reply(0, $result_array);
}

function handle_set() {
$new_workdays = array();
if (isset($_REQUEST['workday'])) {
$new_workdays = explode(',', $_REQUEST['workday']);
}

$new_restdays = array();
if (isset($_REQUEST['restday'])) {
$new_restdays = explode(',', $_REQUEST['restday']);
}

if (empty($new_workdays) && empty($new_restdays)) {
reply(3, 'no valid date provided');
}

$intersect_date = array_intersect($new_workdays, $new_restdays);
if (!empty($intersect_date)) {
reply(4, 'intersect date found: ' . implode(',', $intersect_date));
}

$holidays_json = read_holiday_config();

foreach ($new_workdays as $workday) {
list($year, $month, $day) = date_to_ymd($workday);

// 公司调整工作日
if (isset($holidays_json[$year]['workdays'][$month])) {
if (!in_array($day, $holidays_json[$year]['workdays'][$month])) {
// add to workday
array_push($holidays_json[$year]['workdays'][$month], $day);
}
} else {
$holidays_json[$year]['workdays'][$month] = array($day);
}

// 公司调整休息日
if (isset($holidays_json[$year]['restdays'][$month])) {
if (in_array($day, $holidays_json[$year]['restdays'][$month])) {
// remove from restday
$pos = array_search($day, $holidays_json[$year]['restdays'][$month]);
if ($pos !== false) {
unset($holidays_json[$year]['restdays'][$month][$pos]);
}
if (empty($holidays_json[$year]['restdays'][$month])) {
unset($holidays_json[$year]['restdays'][$month]);
}
}
}
}

foreach ($new_restdays as $restday) {
list($year, $month, $day) = date_to_ymd($restday);

// 公司调整工作日
if (isset($holidays_json[$year]['restdays'][$month])) {
if (!in_array($day, $holidays_json[$year]['restdays'][$month])) {
// add to workday
array_push($holidays_json[$year]['restdays'][$month], $day);
}
} else {
$holidays_json[$year]['restdays'][$month] = array($day);
}

// 公司调整休息日
if (isset($holidays_json[$year]['workdays'][$month])) {
if (in_array($day, $holidays_json[$year]['workdays'][$month])) {
// remove from restday
$pos = array_search($day, $holidays_json[$year]['workdays'][$month]);
if ($pos !== false) {
unset($holidays_json[$year]['workdays'][$month][$pos]);
}
if (empty($holidays_json[$year]['workdays'][$month])) {
unset($holidays_json[$year]['workdays'][$month]);
}
}
}
}
if (false === write_holiday_config($holidays_json)) {
reply(5, 'can not write to file');
} else {
reply(0, 'OK');
}
}

function handle_set_national() {
$new_shift = array();
if (isset($_REQUEST['shift'])) {
$new_shift = explode(',', $_REQUEST['shift']);
}

$new_holidays = array();
if (isset($_REQUEST['holidays'])) {
$new_holidays = explode(',', $_REQUEST['holidays']);
}

if (empty($new_shift) && empty($new_holidays)) {
reply(3, 'no valid date provided');
}

$intersect_date = array_intersect($new_shift, $new_holidays);
if (!empty($intersect_date)) {
reply(4, 'intersect date found: ' . implode(',', $intersect_date));
}

$holidays_json = read_holiday_config();

// 法定休息日
foreach ($new_holidays as $workday) {
list($year, $month, $day) = date_to_ymd($workday);
if (!isset($holidays_json[$year]['holidays'][$month])) {
$holidays_json[$year]['holidays'][$month] = array();
}
array_push($holidays_json[$year]['holidays'][$month], $day);
}

// 法定调休日
foreach ($new_shift as $shift) {
list($year, $month, $day) = date_to_ymd($shift);
if (!isset($holidays_json[$year]['shift'][$month])) {
$holidays_json[$year]['shift'][$month] = array();
}
array_push($holidays_json[$year]['shift'][$month], $day);
}
write_holiday_config($holidays_json);
reply(0, 'OK');
}

$action = 'query';
if (isset($_REQUEST['action'])) {
$action = $_REQUEST['action'];
}

switch ($action) {
case 'query':
handle_query();
break;
case 'set':
handle_set();
break;
case 'set_national':
handle_set_national();
break;
default:
reply(2, 'unknown action: ' . $action);
break;
}

?>
```
2021-01-08 09:35:14 +08:00
回复了 auto8888 创建的主题 问与答 IOS 有什么好用的节假日闹钟吗?
我是自己用 php 简单写了个脚本,预先手动录入假日办公布的节假日安排信息,同时支持手动设置工作日和调休日,手机上用 iOS 快捷指令设置每天 0 点获取一次当天工作日信息,根据是否工作日来手动开关闹钟。代码随后贴出来。
2021-01-07 17:46:59 +08:00
回复了 dzdh 创建的主题 职场话题 什么时候开始有『产品经理』比研发大一级的调调的?
因为没有研发经理跟他对线
2021-01-07 07:28:24 +08:00
回复了 Mac 创建的主题 问与答 这个新年要屯点啥?
家里有宠物的,也记得囤足够的宠物用品:粮食、零食、护理用品,趁现在还不算严重,还能再去一次宠物医院或宠物店洗一个澡啥的。
2021-01-07 07:25:29 +08:00
回复了 Mac 创建的主题 问与答 这个新年要屯点啥?
我囤了一大堆小面包,保证能撑过正月十五,所以没有买保质期很长的食物。
大米家里也还有,去年囤的还剩一半,够吃一年了,准备再囤一点大白菜、快乐水、纸巾等生活用品,尽量减少出门次数,管不住别人,管自己还是可以的~
2021-01-06 07:32:21 +08:00
回复了 pppcx 创建的主题 分享发现 绿联这牌子就这么差么?
绿联属于那种手工作坊,做出来的东西质量参差不齐,有好有坏,总体质量还是符合正态分布的。如果不是那百分之几的欧皇,估计难买到质量好的绿联产品。
如果买个东西和买彩票一样,运气好才能买到质量好的,售后还不行,这样的东西,我一向是敬而远之。
2021-01-05 18:34:50 +08:00
回复了 lcdxiangzi 创建的主题 奇思妙想 有没有老哥帮忙推荐点酒,新手上路自己喝的。
我个人最喜欢的:
调制鸡尾酒:RIO
威士忌:jim beam (白标)、格兰菲迪 18 年以上的。
威士忌,酒精度会比较高,可以兑快乐水喝。
2021-01-04 15:18:43 +08:00
回复了 madNeal 创建的主题 问与答 阻生智齿要不要拔
横向的阻生智齿必须要拔,不然会把正常的臼齿顶掉
2021-01-04 15:16:02 +08:00
回复了 cyrbuzz 创建的主题 问与答 大佬们,推荐几款无线鼠标。
@elfive #7 错了,G Pro 旧款也是有线的
2021-01-04 15:15:24 +08:00
回复了 cyrbuzz 创建的主题 问与答 大佬们,推荐几款无线鼠标。
无线:G304/G Pro(非 hero,而是 3322 芯片的旧款)
有线:G102
手不大的人最适合的万金油外形鼠标。
2021-01-03 16:08:12 +08:00
回复了 Elethom 创建的主题 分享创造 新年第一天,写了个格力空调的 Homebridge 接入
@Elethom #9 搞错了😂,是京鱼智能,我那个空调的链接在这里( https://item.m.jd.com/product/4939815.html ),目前已经下架了。我记得我之前了解过,也注册了他们的开发者,后来拿到开发文档后才发现他们给的不是协议,而是编译好的二进制库,就放弃了。
2021-01-03 07:19:01 +08:00
回复了 Elethom 创建的主题 分享创造 新年第一天,写了个格力空调的 Homebridge 接入
@elfive #7
帮楼主测试了……果然因为京东京造和格力用的是不同的协议而不支持……
https://i.loli.net/2021/01/03/litzndMarH1LJxE.jpg
2021-01-03 07:04:40 +08:00
回复了 Elethom 创建的主题 分享创造 新年第一天,写了个格力空调的 Homebridge 接入
支持京东京造的格力空调吗?
2021-01-02 18:59:14 +08:00
回复了 KarlRixon 创建的主题 Linux 自己的阿里学生机中了木马,被挖矿了,分享一下
我遇到过一次,不过是不小心把 php-fpm 的 9000 端口暴露到了公网上,因为是在容器里面的服务,所以 CPU 没有占用到 100%,而且因为没有 Host 权限,所以只在 /tmp/下发现了这个挖矿脚本,直接删除容器,将 9000 端口仅暴露给局域网就搞定了。
1 ... 51  52  53  54  55  56  57  58  59  60 ... 137  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2247 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 16:02 · PVG 00:02 · LAX 09:02 · JFK 12:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.