管理外借设备的小工具(简化界面和优化手机界面的功能jquery mobile)

前阵子写了个小工具,后来经过经理的审核后给了我几个改进的建议,第一是简化界面,这个工具将来会用手机来进行管理,所以界面上要尽量简化,省去不必要的组件,第二是使用jquery mobile来美化界面,第三是使用ajax post方式来提交数据,避免传统的post方法重载整个页面。

第一,我加上了检测客户端设备的页面为首页,这样就能在访问首页的时候根据设备来做重定向,

此代码参考了csdn里某大牛的文章,做了部分修改,原文出自这里:链接

index.php代码为:

    <?php  
       
    function is_mobile(){  
       
    $regExp="/mobile|nokia|iphone|ipad|android|samsung|htc|motorola|blackberry|ericsson|huawei|dopod|amoi|gionee|^sie\-|^bird|^zte\-|haier|";  
       
    $regExp.="blazer|netfront|helio|hosin|novarra|techfaith|palmsource|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";  
       
    $regExp.="symbian|smartphone|midp|wap|phone|windows ce|CoolPad|webos|iemobile|^spice|longcos|pantech|portalmmm|";  
       
    $regExp.="alcatel|ktouch|nexian|^sam\-|s[cg]h|^lge|philips|sagem|wellcom|bunjalloo|maui|";  
       
    $regExp.="jig\s browser|hiptop|ucweb|ucmobile|opera\s*mobi|opera\*mini|mqqbrowser|^benq|^lct";  
       
    $regExp.="480×640|640x480|320x320|240x320|320x240|176x220|220x176/i";  
       
            if(!isset($_SERVER[‘HTTP_USER_AGENT‘])){  
       
                    return true;  
       
            }else{  
       
                    return @$_GET[‘mobile‘] || isset($_SERVER[‘HTTP_X_WAP_PROFILE‘]) || isset($_SERVER[‘HTTP_PROFILE‘]) || preg_match($regExp, strtolower($_SERVER[‘HTTP_USER_AGENT‘]));  
       
            }  
       
    }  
       
    ?>  
       
    <?php echo ‘you are ‘.(is_mobile()? ‘mobile‘ : ‘desktop‘).‘ user, redirecting...‘;?>
    <?php is_mobile()? $rd_link=‘mobile.php‘ : $rd_link=‘desktop.php‘;
        echo $rd_link;
        header("Location:$rd_link");    
    ?>

第二,桌面版界面我改成这样了

跟之前的对比:

是不是简洁了很多?

desktop.php

桌面版主要使用jquery的document.ready来检测事件,使用传统的post提交数据

代码附上:

<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="js/tooltipster-master/css/tooltipster.css">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript" src="js/tooltipster-master/js/jquery.tooltipster.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $(".borrow_disable").attr(‘disabled‘,‘disable‘);
    $(".return_disable").attr(‘disabled‘,‘disable‘);
    $(".select_staff").each(function(){
        var staff=$(this).val();
        //alert(staff);
        $(this).closest(‘td‘).next().find(‘input[name="staff"]‘).val(staff);
    })

    $(".select_staff").each(function(){
        $(this).change(function(){
        var staff=$(this).val();
        $(this).closest(‘td‘).next().find(‘input[name="staff"]‘).val(staff);
    });
        //alert(staff);
    })

    $(".borrow_form").each(function(){
      $(this).submit(function(event){
          var staff=$(this).find(‘input[name="staff"]‘).val();
          if (staff=="N/A")
              {
                  event.preventDefault();
                  alert(‘please select a staff!‘);
              }

    })
      })
    
    $(".machine").each(function(){
            $(this).tooltipster({
                 position:‘left‘
            })    ;
    })

    $(".borrow_time").each(function(){
            $(this).tooltipster({
                 position:‘right‘,
                 contentAsHTML: true
            })    ;
    })

    $(".return_time").each(function(){
            $(this).tooltipster({
                 position:‘right‘,
                 contentAsHTML: true
            })    ;
    })

});
</script>
</head>
<body>
<div class=title>
<h3>6waves device management</h3>
</div>
<div class=content>
<table>
<tr><th>Device</th><th>Staff</th><th>Action</th></tr>
<?php
require_once(‘device_management/database.php‘);
require_once(‘device_management/config.inc‘);
$staff_list=$staff;
$DB = new Database ($DB["host"], $DB["user"], $DB["pass"], $DB["name"]);

if ($_REQUEST[‘borrowed‘]==1)
    {
        $data[‘borrowed‘]=1;
        if    ((!empty($_REQUEST[‘device_id‘])) and (!empty($_REQUEST[‘staff‘])) and ($_REQUEST[‘staff‘]!=="N/A"))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                $data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘borrow_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                $DB->updateRecord(‘device_map‘,$data,$wherestr);
            }
    }
if ($_REQUEST[‘borrowed‘]==0)
    {
        $data[‘borrowed‘]=0;
        if    (!empty($_REQUEST[‘device_id‘]))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                $data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘return_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                $DB->updateRecord(‘device_map‘,$data,$wherestr);
            }
}
//var_dump($data);

$sql="select `device_id`,`type`,`alias` ,  `staff`,`borrowed`,`borrow_time`,`return_time` from `device_map`";
$rs=$DB->Query($sql);
while ($row=mysql_fetch_assoc($rs) )
    {
            $machine=$row[‘device_id‘];
            $type=$row[‘type‘];
            $alias=$row[‘alias‘];
            $device_icon="./image/".$row[‘type‘].".png";
            if ($row[‘borrow_time‘]!==‘0000-00-00 00:00:00‘)
                {
                    $borrow_time=$row[‘borrow_time‘];
                    $borrow_time_class="borrow_time";
                }
            else 
                {    
                    $borrow_time="N/A";
                    $borrow_time_class="no_time";
                }
            if ($row[‘return_time‘]!==‘0000-00-00 00:00:00‘)
                {
                    $return_time=$row[‘return_time‘];
                    $return_time_class="return_time";
                }
            else
                {
                     $return_time="N/A";
                     $return_time_class="no_time";
                }

            if    (is_null($row[‘staff‘] ))
                {
                    $staff="N/A";
                }
            else $staff=$row[‘staff‘];
            if ($staff=="N/A")
                {
                    $staff="N/A";
                }
            if ($row[‘borrowed‘]==0)
                {
                    $borrow_class=‘borrow_enable‘;
                    $borrowed=0;
                    $return_class=‘return_disable‘;
                    $last_borrow=$row[‘borrow_time‘];
                    $last_return=$row[‘return_time‘];
                    $status="available";
                    $status_class=$return_time_class;
                    $info="last borrow time: ".$last_borrow."&lt;br/&gt; last return time: ".$last_return;
                    $borrow_form="<form  class=borrow_form method=post><input class=hidden value=$machine name=device_id><input class=\"hidden\" value=\"\" name=staff><input class=hidden value=1 name=borrowed><input class=$borrow_class type=submit value=borrow></form>";
                    $form=$borrow_form;
                }
            else
                {
                    $borrow_class=‘borrow_disable‘;
                    $borrowed=1;
                    $return_class=‘return_enable‘;
                    $last_borrow=$row[‘borrow_time‘];
                    $status="borrowed";
                    $status_class=$borrow_time_class;
                    $info="last borrow time: ".$last_borrow;
                    $return_form="<form  class=return_form method=post><input class=hidden value=$machine name=device_id><input class=hidden value=0 name=borrowed><input class=$return_class type=submit value=return></form>";
                    $form=$return_form;
                }
            $options="";
            //echo $staff;exit;
            if ($staff=="N/A") 
                        {
                            $options="<option selected value=\"N/A\">N/A</option>"    ;
                            //echo $options."\n";
                        }
            else
                        {
                            $options="<option value=\"N/A\">N/A</option>"    ;
                            $selected_class="unselected";
                        }
            foreach ($staff_list as $stf)
                {
                    if ($staff == $stf)
                        {
                            $options.="<option style=\"background-color:green;color:#FFF\" selected value=\"".$staff."\">$staff</option>"    ;
                            $selected_class="selected";
                        }
                    else 
                        {
                            $options.="<option value=\"$stf\">$stf</option>";
                            //$selected_class="unselected";
                        }
                }
            //echo $options;
            echo "<tr><td class=machine title=\"$alias\"><img class=device_icon title=\"$alias\" src=$device_icon><span title=\"$alias\">".$machine."</span></td><td class=staff><select class=\"select_staff\" name=staff>$options</select></td><td class=$status_class title=\"$info\">$form</td></tr>";
    //    }
}
$DB->Close();
?>
</table>
</div>
</body>
</html>

第三,手机版的界面改进

效果图:

有木有发现按钮和选择框都被放大了很多?这是主要为了显示在手机上而优化的,直接应用了jquery

mobile的库,mobile.php代码如下:

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
//这一行很管用,主要是在手机里能100%显示并禁止缩放界面
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="js/tooltipster-master/css/tooltipster.css">
<link rel="stylesheet" type="text/css" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.css">
<!--<link rel="stylesheet" type="text/css" href="css/jquery.mobile.min.css">-->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.3/jquery.mobile.min.js"></script>
//加载jquerymobile的css和js库
<script type="text/javascript" src="js/tooltipster-master/js/jquery.tooltipster.min.js"></script>
<script type="text/javascript">

/*检测选择框里员工名字的改变传递给表单*/  
$(document).on(‘change‘,‘.select_staff‘,function(){ 
        var staff=this.value;
        $(this).closest(‘td‘).next().find(‘input[name="staff"]‘).val(staff);
    });
  

/*检测titile的变化并触发tooltipster来改变提示字符串*/
$(document).on(‘change‘,‘.borrow_time‘,function(){ 
                 $(this).tooltipster({
                 position:‘left‘,
                 contentAsHTML: true
            })    ;

    });

$(document).on(‘change‘,‘.return_time‘,function(){ 
                 $(this).tooltipster({
                 position:‘right‘,
                 contentAsHTML: true
            })    ;

    });

    
//$(document).ready(function(){
//jquery.document.ready在手机里加载后不管用,只能用以下on pageinit事件来检测触发
$(document).on(‘pageinit‘,function(){
    //$(".borrow_disable").attr(‘disabled‘,‘disable‘);
    //$(".return_disable").attr(‘disabled‘,‘disable‘);
    $(".select_staff").each(function(){
        var staff=$(this).val();
        $(this).closest(‘td‘).next().find(‘input[name="staff"]‘).val(staff);
    })

/*以下使用ajax post的方式提交数据给后台cgi.php处理,并根据返回的数据处理前端的变更*/
    $(".borrow_form").submit(function(event){
          var staff=$(this).find(‘input[name="staff"]‘).val();
          var staff_input=$(this).find(‘input[name="staff"]‘);
          var span_select_staff=$(this).closest(‘td‘).prev().find(‘span.select_staff‘);
          var select_staff=$(this).closest(‘td‘).prev().find(‘select.select_staff‘);
          if (staff=="N/A" || staff=="")
              {
                  event.preventDefault();
                  alert(‘please select a staff!‘);
              }
            // ajax post data start
          else 
            {
                event.preventDefault();
                var device_id=$(this).find(‘input[name="device_id"]‘).val();
                var borrowed=$(this).find(‘input[name="borrowed"]‘).val();
                var borrowed_input=$(this).find(‘input[name="borrowed"]‘);
                //var submit_input=$(this).find(‘input[type="submit"]‘);
                var submit_input=$(this).find(‘div‘);
                var time_object=$(this).closest(‘td‘).next();
                $.post("cgi.php", {device_id:device_id,staff:staff,borrowed:borrowed}, function(resp)
                    {
                        if (resp.error==0)
                            {
                                alert(resp.msg);
                                borrowed_input.val(resp.borrowed_set);
                                //submit_input.text(‘return<br/><input‘+ ‘ type="submit"‘+‘ value="return" ‘+‘ class="return_enable">‘);
                                select_staff.filter(‘option[value=\‘‘+resp.selected_staff+‘\‘]‘).prop(‘selected‘,‘selected‘);
                                //select_staff.prop(‘selected‘,false).filter(‘option[value=\‘‘+resp.selected_staff+‘\‘]‘).prop(‘selected‘,true);
                                //select_staff.val(resp.selected_staff);
                                span_select_staff.text(resp.selected_staff);
                                staff_input.val(resp.selected_staff);
                                submit_input.text(resp.submit_input_value);
                                submit_input.val(resp.submit_input_value);
                                submit_input.append(‘<input‘+ ‘ type="submit"‘+‘ value=‘+resp.submit_input_value+‘>‘);
                                //submit_input.attr(‘class‘,‘return_enable‘);
                                time_object.attr(‘class‘,resp.time_class);
                                time_object.attr(‘title‘,resp.time);
                            }
                        else 
                            {
                                alert(resp.msg);
                            }
                    },"json")
            }    
            // ajax post data end

      })

    $(".machine").tooltipster({
                 position:‘left‘
            })    ;

    $(".borrow_time").tooltipster({
                 position:‘left‘,
                 contentAsHTML: true
            })    ;

    $(".return_time").tooltipster({
                 position:‘left‘,
                 contentAsHTML: true
            })    ;

    $(".borrow_time").change(function(){
                 tooltipster({
                 position:‘left‘
            })    ;
            })    ;

    $(".return_time").change(function(){
                 tooltipster({
                 position:‘left‘
            })    ;
            })    ;

});
</script>
</head>
<body>
<div id="mobile">
<header data-role="header"><h3>6waves device management</h3></header>
<div data-role="content" id="content">
<table>
<thead>
<tr><th>Device</th><th>Staff</th><th>Action</th><th></th></tr>
</thead>
<tbody>
<?php
require_once(‘device_management/database.php‘);
require_once(‘device_management/config.inc‘);
$staff_list=$staff;
$DB = new Database ($DB["host"], $DB["user"], $DB["pass"], $DB["name"]);

if ($_REQUEST[‘borrowed‘]==1)
    {
        $data[‘borrowed‘]=1;
        if    ((!empty($_REQUEST[‘device_id‘])) and (!empty($_REQUEST[‘staff‘])) and ($_REQUEST[‘staff‘]!=="N/A"))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                $data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘borrow_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                $DB->updateRecord(‘device_map‘,$data,$wherestr);
            }
    }
if ($_REQUEST[‘borrowed‘]==0)
    {
        $data[‘borrowed‘]=0;
        if    (!empty($_REQUEST[‘device_id‘]))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                $data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘return_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                $DB->updateRecord(‘device_map‘,$data,$wherestr);
            }
}
//var_dump($data);

$sql="select `device_id`,`type`,`alias` ,  `staff`,`borrowed`,`borrow_time`,`return_time` from `device_map`";
$rs=$DB->Query($sql);
while ($row=mysql_fetch_assoc($rs) )
    {
            $machine=$row[‘device_id‘];
            $type=$row[‘type‘];
            $alias=$row[‘alias‘];
            $device_icon="./image/".$row[‘type‘].".png";
            if ($row[‘borrow_time‘]!==‘0000-00-00 00:00:00‘)
                {
                    $borrow_time=$row[‘borrow_time‘];
                    $borrow_time_class="borrow_time";
                }
            else 
                {    
                    $borrow_time="N/A";
                    $borrow_time_class="no_time";
                }
            if ($row[‘return_time‘]!==‘0000-00-00 00:00:00‘)
                {
                    $return_time=$row[‘return_time‘];
                    $return_time_class="return_time";
                }
            else
                {
                     $return_time="N/A";
                     $return_time_class="no_time";
                }

            if    (is_null($row[‘staff‘] ))
                {
                    $staff="N/A";
                }
            else $staff=$row[‘staff‘];
            if ($staff=="N/A")
                {
                    $staff="N/A";
                }
            if ($row[‘borrowed‘]==0)
                {
                    $borrow_class=‘borrow_enable‘;
                    $borrowed=0;
                    $return_class=‘return_disable‘;
                    $last_borrow=$row[‘borrow_time‘];
                    $last_return=$row[‘return_time‘];
                    $status="available";
                    $status_class=$return_time_class;
                    $info="last borrow time: ".$last_borrow."&lt;br/&gt; last return time: ".$last_return;
                    $borrow_form="<form  class=borrow_form method=post><input type=hidden value=$machine name=device_id><input type=hidden value=\"\" name=staff><input type=hidden value=1 name=borrowed><input class=$borrow_class type=submit value=borrow></form>";
                    $form=$borrow_form;
                }
            else
                {
                    $borrow_class=‘borrow_disable‘;
                    $borrowed=1;
                    $return_class=‘return_enable‘;
                    $last_borrow=$row[‘borrow_time‘];
                    $status="borrowed";
                    $status_class=$borrow_time_class;
                    $info="last borrow time: ".$last_borrow;
                    $borrow_form="<form  class=borrow_form method=post><input type=hidden value=$machine name=device_id><input type=hidden value=0 name=borrowed><input class=$return_class type=submit value=return></form>";
                    $form=$borrow_form;
                }
            $options="";
            //echo $staff;exit;
            if ($staff=="N/A") 
                        {
                            $options="<option selected value=\"N/A\">N/A</option>"    ;
                            //echo $options."\n";
                        }
            else
                        {
                            $options="<option value=\"N/A\">N/A</option>"    ;
                            $selected_class="unselected";
                        }
            foreach ($staff_list as $stf)
                {
                    if ($staff == $stf)
                        {
                            $options.="<option style=\"background-color:green;color:#FFF\" selected value=\"".$staff."\">$staff</option>"    ;
                            $selected_class="selected";
                        }
                    else 
                        {
                            $options.="<option value=\"$stf\">$stf</option>";
                        }
                }
            echo "<tr><td class=machine title=\"$alias\" style=\"white-space:nowrap\"><img class=device_icon title=\"$alias\" src=$device_icon align=\"absmiddle\"><span title=\"$alias\">".$machine."</span></td><td><select class=\"select_staff\" name=staff >$options</select></td><td>$form</td><td class=$status_class title=\"$info\"><img src=image/info.png></td></tr>";
    //    }
}
$DB->Close();
?>
</tbody>
</table>
</div>
</div>
</body>
</html>

有个后台的脚本cgi.php来接收处理前端的请求,代码附上:

<?php
require_once(‘device_management/database.php‘);
require_once(‘device_management/config.inc‘);
$staff_list=$staff;
$DB = new Database ($DB["host"], $DB["user"], $DB["pass"], $DB["name"]);

/*borrowed字段在数据库里1表示已借出,0表示没借,已归还状态*/
if ($_REQUEST[‘borrowed‘]==1)
    {
        $data[‘borrowed‘]=1;
        if    ((!empty($_REQUEST[‘device_id‘])) and (!empty($_REQUEST[‘staff‘])) and ($_REQUEST[‘staff‘]!=="N/A"))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                $data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘borrow_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                if ($DB->updateRecord(‘device_map‘,$data,$wherestr))
                {
                    $resp[‘error‘]=0;
                    $resp[‘msg‘]=‘borrow done!!!‘;
                    $resp[‘borrowed_set‘]=0;
                    $resp[‘submit_input_value‘]=‘return‘;
                    $resp[‘time_class‘]=‘borrow_time‘;
                    $resp[‘time‘]="last borrow time:".$data[‘borrow_time‘];
                    $resp[‘selected_staff‘]=$data[‘staff‘];
                    //$sql="select `borrow_time` from `device_map` where `device_id`=".$data[‘device_id‘];
                    //$rs=$DB->Query($sql);
                    //while ($row=mysql_fetch_assoc($rs) ){
                            //$resp[‘borrow_time‘]="last borrow time:".$row[‘borrow_time‘];
                    //    }
                }
                else {
                    $resp[‘error‘]=1;
                    $resp[‘msg‘]=‘can not process!!!‘;
                }
                echo json_encode($resp);
                $DB->Close();
            }
        else 
            {
                    $resp[‘error‘]=1;
                    $resp[‘msg‘]=‘can not process, please check post data!!!‘;
                    echo json_encode($resp);

            }
    }
if ($_REQUEST[‘borrowed‘]==0)
    {
        $data[‘borrowed‘]=0;
        if    (!empty($_REQUEST[‘device_id‘]))
            {
                $data[‘device_id‘]=$_REQUEST[‘device_id‘];
                #$data[‘staff‘]=$_REQUEST[‘staff‘];
                $data[‘staff‘]="";
                $data[‘return_time‘]=date(‘Y-m-d H:i:s‘,time());
                $wherestr="`device_id`=‘".$data[‘device_id‘]."‘";
                if ($DB->updateRecord(‘device_map‘,$data,$wherestr))
                {
                    $resp[‘error‘]=0;
                    $resp[‘msg‘]=‘return done!!!‘;
                    $resp[‘borrowed_set‘]=1;
                    $resp[‘submit_input_value‘]=‘borrow‘;
                    $resp[‘time_class‘]=‘return_time‘;
                    $resp[‘time‘]="last return time:".$data[‘return_time‘];
                    $resp[‘selected_staff‘]=‘N/A‘;
                }
                else {
                    $resp[‘error‘]=1;
                    $resp[‘msg‘]=‘can not process!!!‘;
                }
                echo json_encode($resp);
                $DB->Close();
            }
        else 
            {
                    $resp[‘error‘]=1;
                    $resp[‘msg‘]=‘can not process,device_id can not be empty!!!‘;
                    echo json_encode($resp);

            }

}

?>
时间: 2024-11-05 11:35:16

管理外借设备的小工具(简化界面和优化手机界面的功能jquery mobile)的相关文章

用php写一个管理外借设备的小工具--技术提高生产力

我学网站编程属于半途出家的类型,本是搞运维的,进了现在的公司后意识到学习一门编程语言的重要性,便从平时的工作时间里抽出部分来做学习和练习. 公司做技术的都是属于编程出身的,从网站设计到手机程式设计,好像大多数的人都在走这样的一条道路. 公司的部分业务是做手机游戏开发的,测试设备也越来越多,管理权归我们运维两个人所有,一直以来都是用个小笔记本做外借的登记,每天都有不同的测试人员过来借设备,ipad,iphone,android机,借了又还,还了另外一个人过来借,不用多久,那笔记本已经累积到厚厚的一

网页抓取数据小工具-简化数值变量值

笔者出于兴趣或者工作需要,会经常对一些网站的数据进行数据抓取,对于像淘宝.携程.百度这类大型互联网公司的网站,出于安全或者性能考虑,常常会针对网站加入反抓取策略脚本. 在该类脚本中,常见的手法有以下几种: 1. 针对简单数值变量的值,会把它用一个数值表达式来表示,让你没办法一眼看穿它,如:_lkqr = - ((104 | 3525868) % 705192) 2. 把一个简单的数值,用手法1中两个变量进行运算,得到真正数值.如: _set = _lkqr + _lnz 3. 提供一个字符串转换

手把手教你做音乐播放器(八)桌面小工具(上)

第8节 桌面小工具 桌面小工具是可以放置在主界面的.快速控制应用的小助手.例如我们的音乐小工具,它可以帮助用户在桌面上就完成音乐的暂停.播放.切换等操作,而不需要启动应用本身. 在安卓系统中,我们也常常叫它App widget. 实现一个App widget要经过以下几个步骤, 创建一个App widget类,让它继承自AppWidgetProvider,例如AnddleMusicAppWidget类: 放在res\layout目录下,为App widget的界面定义一个布局,例如anddle_

js 创建书签小工具之理论

我们一直在寻找增加浏览体验的方法,有的方法众所周知,有的则鲜为人知.我原本认为书签小工具属于后者,非常令人讨厌的东西.令我非常懊恼的是我发现在这个问题上我完全是错误的.它并不是令人厌烦的,而是以用户为中心的,能实现很多出色的功能,而且就像人们所预期的一样,它成为了我与浏览者以及网络交互的核心部分. 这里我想向你介绍开发书签小工具以实现一些精妙的书签的全过程.是的,书签,我们将创建不只一个书签,即使是非常小的书签.很好奇吗?我们开始吧! 究竟什么是书签小工具呢? 引用前文的话: 书签小工具是一个非

PNote桌面贴小工具 - 项目管理系列文章

项目经理在项目过程中将会使用到各种工具,以期能够相互配合,对项目组的各种管理工作进行工作的开展和完成.以前就写过一些项目工具的使用,见下链接: 1.Mindjet MindManager思维导图工具的使用 - 项目管理系列文章 2使用Project进行项目管理 - 项目管理系列文章 本文就写写另一个类似于计划管理方面的一个小工具:PNotes.Net. 首先,从下列地址下载该工具:http://pan.baidu.com/s/1i4MfZql. Pnotes.Net以前使用的是VC=工具编写的,

初学Python-搞了一个linux用户登录监测小工具

这几天突发奇想,想学习一下Python.看了点基础,觉得有点枯燥,所以想搞点什么.想了想,就随便弄个检测Linux用户登录的小工具吧~ 首先,明确一下功能: 1.能够捕获 linux 用户登录的信息.(这个很容易,方法比较多) 2.能够将捕捉的信息记录下来.(不然要这信息干嘛……) 3.最好能够一发现有人登陆,就给管理员发个邮件.(这个功能比较实用~) 4.没想好.(功能可以不断完善嘛) 嗯,那现在就要着手解决技术难点了(对我来说可能是难点吧,毕竟才看了几天书……). 1.捕获linux登录信息

Linux批量管理服务器小工具--PSSH

Linux批量管理服务器小工具--PSSH 一.简介 pssh -- parallel ssh program pssh  is  a program for executing ssh in parallel on a number of hosts.  It provides features such as sending input to all of the processes, passing a password to ssh, saving output to files, an

[易飞]易飞-日常管理小工具

1.易飞9.X审核元, 作用:审核元件异常替换组件 下载:http://download.csdn.net/detail/david_520042/7177295 2.数据库管理工具. 作用:触发器,存储过程,视图,函数批量查询,批量禁用启用. 下载:http://download.csdn.net/detail/david_520042/7716395 3.easyflow表单提醒 作用:需要审核的表单,运行之后自动提醒. 下载:http://download.csdn.net/detail/

python的实战:一个目录一键启动管理小工具

简单的学习了几天的python,总觉得最好根据自身的需求来做点小工具实战一下. 上班的时候由于有很多目录需要打开.每次都要一个个的找那些目录.我觉得,我需要一个小工具.然后登记下,所有需要打开的目录.然后可以很方便的一键打开所有的目录或者是有哪些文件.然后登记一下.可以一次性打开所有登记的目标每次打开工具时,需要读取xml的数据.每增加一条数据要写入到xml中.这样我们即使部使用辅助工具去添加记录.直接修改xml文件的数据来增加记录也是可以的.具体实现如下 import os import xm