Cannot read property 'length' of undefined问题

这是前台报的错误 sql我执行了有数据

 Uncaught TypeError: Cannot read property 'options' of null
    at replaceSelect (select_ui.js:917)
    at addSelect (select_ui.js:771)
    at initAllSelectUi (select_ui.js:728)
    at init (forwardNode.do?nodeName=StaffQuery:266)
    at wrappedFn (yahoo-dom-event.js:135)

应该是js哪个属性名错了把
这是js

 function queryTask(){
  YAHOO.util.Dom.setStyle("taskCont0","display","none");
  YAHOO.util.Dom.get("content0_message").innerHTML="<h2 class='default' onClick=\"ExChgClsName(this,'task0')\">员工信息</h2>";
  YAHOO.util.Dom.setStyle("taskCont0","display","");
  executeQuery(1,10);
}
//init on load
YAHOO.util.Event.addListener(window,'load',init);

2个回答

options是null了能贴完整的代码吗,明显是你页面都没加载完就运行了js所以报异常

<%@ page contentType="text/html;charset=GBK"%>


员工查询
<%@ include file="/common/taglibs.jsp"%>
<%@ include file="/common/meta_css.jsp"%>


namespace="/personManage">



员工查询条件






                    <td class="bgc_tt short">
                        员工姓名:
                    </td>
                    <td class="long">
                        <s:textfield name="userName" cssClass="input_v w_22"
                            ondblclick="getPersonByIns(this, 'StaffCode', '0,1', 'Y','0000','');"
                            onchange="code_CodeChange(this, 'StaffCode', '-1,0', 'Y','0000','');" />
                    </td>

                </tr>
                <tr>
                    <td class="bgc_tt short">
                        归属机构/部门代码:
                    </td>
                    <td class="long">
                        <s:textfield name="staffManageCondition.comCode" id="staffManageCondition.comCode"
                            cssClass="input_v w_22"
                            ondblclick="code_CodeSelect(this, 'ComcodeAndDepartment', '0,1', 'Y','0000','sales.personManage.personQuery');"
                            onchange="code_CodeChange(this, 'ComcodeAndDepartment', '0,1', 'Y','0000','sales.personManage.personQuery');" />
                    </td>
                    <td class="bgc_tt short">
                        归属机构/部门名称:
                    </td>
                    <td class="long">
                        <s:textfield name="comCName" cssClass="input_v w_22"
                            ondblclick="code_CodeSelect(this, 'ComcodeAndDepartment', '-1,0', 'Y','0000','sales.personManage.personQuery');"
                            onchange="code_CodeChange(this, 'ComcodeAndDepartment', '-1,0', 'Y','0000','sales.personManage.personQuery');" />
                    </td>
                </tr>

                <tr style="display: none;">
                    <td class="bgc_tt short">
                        归属团队代码:
                    </td>
                    <td class="long">

                        <s:textfield name="staffManageCondition.teamCode" id="staffManageCondition.teamCode" cssClass='input_v w_22'
                            ondblclick="checkQueryComCode(this, '1','1','TeamCodeByComOrDepartment')"
                            onchange="checkQueryComCode(this, '2','1','TeamCodeByComOrDepartment')"
                            />

                    </td>
                    <td class="bgc_tt short">
                        归属团队名称:
                    </td>
                    <td class="long">
                        <s:textfield name="teamName" cssClass="input_v w_22"
                            ondblclick="checkQueryComCode(this, '1','-1','TeamCodeByComOrDepartment')"
                            onchange="checkQueryComCode(this, '2','-1','TeamCodeByComOrDepartment')"
                            />
                    </td>
                </tr>
                <tr>
                    <td class="bgc_tt short">
                        岗位:
                    </td>
                    <td class="long" >
                    <div id="prpSstaffPositionAc" class="selectui-indiv">
                         <div class="selectConfig">
                               <div class="codeType">sysValue_StaffPosition</div>
                               </div>
                            <input id="prpSstaffPositionId" class="selectui-input" />
                              <s:hidden name="staffManageCondition.position" />
                            <div id="prpSstaffPositionId_Container" class="selectui-container"></div>
                    </div>

                    </td>

                    <td class="bgc_tt short">
                        效力状态:
                    </td>
                    <td class="long" >
                    <div id="prpScompanyValidStatusAc" class="selectui-indiv w_22">
                            <div class="selectConfig">
                                <div class="codeType">StaticSelect</div>
                            </div>
                            <s:select name="staffManageCondition.validStatus" id="validStatusId" cssClass="selectui-input w_13" 
                                list="#@java.util.LinkedHashMap@{'1':'在职','0':'离司'}"></s:select>
                            <div id="prpScompanyValidStatus_Container" class="selectui-container"></div>
                    </div>

                    </td>
                </tr>
                <tr>
                    <td colspan="4">
                        <center>
                            <%-- 通用按钮 --%>
                            <input type="button" class="button_ty" name="bpmsubmit"
                                value="查询" onclick="queryTask();" />
                        </center>
                    </td>
                </tr>
            </table>
        </div>
        <div id="taskCont0" />
            <div id="content0_message"></div>
            <div id="task0">
                <div id="content0_navigation" class="query" align="left"></div>
                <div id="content0" class="sort"></div>
                <div id="content0_navigation" class="query" align="left"></div>
            </div>

        </div>
    </s:form>
</body>


<%@ include file="/common/i18njs.jsp"%>
<%@ include file="/common/meta_js.jsp"%>

var isFirstLoad = true; var contentDataTable; var contentColumnHeaders0; var tableHeader = { resultsList: "data", fields: ["PERSONID","PERSONNAME","COMNAME","TEAMNAME","VALIDSTATUS","VERIFYSTATUS","OPERATETIMES","OPERATETYPE","VERIFYTYPE"], totalRecords: "totalRecords" }; //YAHOO.namespace("query.container"); //Page Init function init(){ initAllSelectUi(); YAHOO.widget.Column.formatLink = function(elCell, oRecord, oColumn, oData) { switch(oColumn.key){ case "PERSONID": //elCell.innerHTML = oData +"<input type='hidden' name='personId' value='"+oData+"'/><input type='hidden' name='operateTimes' value='"+oRecord["OPERATETIMES"]+"'/>"; elCell.innerHTML = "<a href=\"#\" onclick=\"editRecord('${ctx}/staffManage/staffInfoView.do?modifyPersonId="+oData+"')\">"+ oData +"<input type='hidden' name='personId' value='"+oData+"'/><input type='hidden' name='operateTimes' value='"+oRecord["OPERATETIMES"]+"'/></a>"; break; case "isCheck": elCell.innerHTML ="<input type='checkbox' name='isCheck' value='"+oData+"' onclick=\"checkStatus(this,'"+oRecord["VALIDSTATUS"]+"','"+oRecord["OPERATETYPE"]+"','"+oRecord["VERIFYSTATUS"]+"');\">"; break; case "VALIDSTATUS": if(oRecord.VALIDSTATUS == 1){ elCell.innerHTML ="在职"; }else{ elCell.innerHTML ="离司"; } break; case "VERIFYSTATUS": if(oRecord.VERIFYSTATUS == '0'){ elCell.innerHTML ="暂存"; }else if(oRecord.VERIFYSTATUS == '9'){ elCell.innerHTML ="待审核"; } else if(oRecord.VERIFYSTATUS == '1'){ elCell.innerHTML ="审核通过"; } else if(oRecord.VERIFYSTATUS == '2') { elCell.innerHTML ="审核不通过"; } break; default: elCell.innerHTML = oData; } }; contentColumnHeaders0 =[ {key:"PERSONID",text:"员工代码",width:"30em",sortable:true,type:"link"}, {key:"PERSONNAME",text:"员工姓名",width:"50em",sortable:true,type:"link"}, {key:"COMNAME",text:"归属机构/部门名称",width:"50em",sortable:true,type:"link"}, {key:"VALIDSTATUS",text:"任职状态",width:"30em",sortable:true,type:"link"}, {key:"VERIFYSTATUS",text:"审核状态",width:"30em",sortable:true,type:"link"} ]; } //Query salesman Data function executeQuery(pageNo,pageSize){ if(isNaN(parseInt(pageNo))){ pageNo = 1; } if(isNaN(parseInt(pageSize))){ pageSize = 10; } var myColumnSet = new YAHOO.widget.ColumnSet(contentColumnHeaders0); var myDataSource = new YAHOO.util.DataSource("${ctx}/staffManage/staffListQuery.do"); myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON; myDataSource.responseSchema = tableHeader; myDataSource.subscribe("responseParseEvent",SINOSOFT.util.navigation); myDataSource.connMgr.setForm(fm); var initialRequest = "pageSize="+pageSize+"&pageNo="+pageNo; var myConfiges ={ initialRequest:initialRequest, paginator:false }; contentDataTable = new YAHOO.widget.DataTable("content0",myColumnSet,myDataSource,myConfiges); } function queryTask(){ YAHOO.util.Dom.setStyle("taskCont0","display","none"); YAHOO.util.Dom.get("content0_message").innerHTML="<h2 class='default' onClick=\"ExChgClsName(this,'task0')\">员工信息</h2>"; YAHOO.util.Dom.setStyle("taskCont0","display",""); executeQuery(1,10); } //init on load YAHOO.util.Event.addListener(window,'load',init); function refreshPage(){ // window.submitDlg.hide(); window.fm.bpmsubmit.onclick(); } var submitDlg; function commitVerify() { var isChecks = document.getElementsByName("isCheck"); var personIds = document.getElementsByName("personId"); var operateTimes=document.getElementsByName("operateTimes"); var personId = ""; var operateTime=""; var selectFlag = false; for(var i = 0 ; i < isChecks.length ; i++){ if((isChecks[i].checked)){ personId+= personIds[i].value+","; operateTime+= operateTimes[i].value+","; selectFlag = true; } } if(!selectFlag){ alert("请选择要提交审核的员工"); return false; } if(confirm("确认要提交审核吗?")){ submitDlg = new YAHOO.widget.Panel("submitDlg",{iframe:true, visible:true, width:850, height:350, underlay:"shadow", constraintoviewport:true, fixedcenter:true, modal:true, zIndex:320}); submitDlg.setHeader("员工提交审核"); submitDlg.setBody("<iframe name='submitFrame' src='javascript:false;' frameborder='0' style='margin:0; padding:0; width:100%; height: 100%'></iframe>"); submitDlg.render(document.body); submitDlg.show(); YAHOO.util.Event.addListener(submitDlg.close, "click", submitDlg.close, this); fm.target="submitFrame"; fm.action=contextRootPath+"/staffManage/staffPassAudit.do?personIdSelected="+personId+"&operateTimesSelected="+operateTime; // 链接 fm.submit(); } else { } } function staffModify(personId,operateTimes){ var isChecks = document.getElementsByName("isCheck"); submitDlg = new YAHOO.widget.Panel("submitDlg",{iframe:true, visible:true, width:850, height:350, underlay:"shadow", constraintoviewport:true, fixedcenter:true, modal:true, zIndex:320}); submitDlg.setHeader("员工修改"); submitDlg.setBody("<iframe name='submitFrame' src='javascript:false;' frameborder='0' style='margin:0; padding:0; width:100%; height: 100%'></iframe>"); submitDlg.render(document.body); submitDlg.show(); YAHOO.util.Event.addListener(submitDlg.close, "click", submitDlg.close, this); fm.target="submitFrame"; fm.action=contextRootPath+"/staffManage/initStaffModify.do?modifyPersonId="+personId+"&modifyOperateTimes="+operateTimes; // 链接 fm.submit(); } function deleteStaff(personId,operateTimes){ submitDlg = new YAHOO.widget.Panel("submitDlg",{iframe:true, visible:true, width:850, height:350, underlay:"shadow", constraintoviewport:true, fixedcenter:true, modal:true, zIndex:320}); submitDlg.setHeader("员工删除"); submitDlg.setBody("<iframe name='submitFrame' src='javascript:false;' frameborder='0' style='margin:0; padding:0; width:100%; height: 100%'></iframe>"); submitDlg.render(document.body); submitDlg.show(); YAHOO.util.Event.addListener(submitDlg.close, "click", submitDlg.close, this); fm.target="submitFrame"; fm.action=contextRootPath+"/staffManage/staffDelete.do?modifyPersonId="+personId+"&modifyOperateTimes="+operateTimes; // 链接 fm.submit(); } function checkFindComCode(field,flag,codeType){ var comCodes=document.getElementsByName("staffManageCondition.comCode"); var comcode = comCodes[0].value; if(comcode == ''){ alert("请先选择归属机构代码"); fm.comCode.focus(); }else{ if(flag =='1'){ code_CodeSelect(field, codeType, '0,1', 'Y','0000','','staffManageCondition.comCode'); }else{ code_CodeChange(field, codeType, '0,1', 'Y','0000','','staffManageCondition.comCode'); } } } function getPersonByIns(field,codeType,flag){ var validStatusId = document.getElementById('validStatusId').value; code_CodeSelect(field, codeType, flag, 'Y',validStatusId); } function dataDown(){ fm.action=contextRootPath+"/staffManage/staffInfoExport.do"; // 链接 fm.submit(); }

员工代码:

cssClass="input_v w_22"
ondblclick="getPersonByIns(this, 'StaffCode', '0,1', 'Y','0000','');"
onchange="code_CodeChange(this, 'StaffCode', '0,1', 'Y','0000','');" />
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Cannot read property 'length' of undefined解决办法
我用了easyui的datagrid,却接收不到数据 页面报错:Uncaught TypeError: Cannot read property 'length' of undefined http://localhost:8080/erp02/retail/retailSearch页面的json信息是 {"status":0,"msg":"查询成功","data":[{"Status":false,"OperTime":1504020546000,"DefaultNumber":"LSCK201708290002","TotalPrice":42.0,"CreateTime":1504020579000,"ChangeAmount":42.0,"OperPersonName":"啊哈哈","Remark":""} js $(function(){ $('#retailTable').datagrid({ url:'/erp02/retail/retailSearch', queryParams:'', loadMsg:'Loading...', singleSelect:true, fitColumns:true, columns:[[ {field:'DefaultNumber',title:'单据编号',width:100}, {field:'OperTime',title:'单据日期',width:100}, {field:'OperPersonName',title:'操作员',width:100}, {field:'TotalPrice',title:'金额合计',width:100}, {field:'ChangeAmount',title:'收款',width:100}, {field:'Status',title:'状态',width:100}, {field:'Remark',title:'备注',width:100}, {field:'CreateTime',title:'创建时间',width:100} ]] }); });
js出现Cannot read property 'length' of undefined
js代码: ``` $(document).ready(function(){ var url = "teachers/getSchoolList.do"; $.ajax({ type: "POST", url: url, //async : false, dataType:"text", success : function(data) { alert(data); alert("8888"); var str="<dl>"; console.log(data); $.each(data.list,function (i, value) { str=str+"<dd data-name='"+value[i].SCHOOLNAME+"'>"+value[i].SCHOOLNAME+"</dd>"; }); str = str+"</dl>"; $(".erjimenu").html(str); }, error:function(data){ console.log(data); $("#form-notice").html('获取学校出错,请重新获取'); } }); }) 后台代码: @RequestMapping(value="/getSchoolList") public Object getSchoolList()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String, Object> map = new HashMap<String, Object>(); List<PageData> schoolList = this.schoolService.listAll(new PageData()); map.put("list", schoolList); return AppUtil.returnObject(pd, map); } ```
twproject gantt页面报错
twproject gantt向前端传值时,tasks中assigs为空时不报错,assigns不为空时前端页面报错如下: jquery.JST.js:98 JST error: TASKROW Cannot read property 'length' of undefined
用autocomplete插件结合ajax后台访问源码报错
用autocomplete插件结合ajax后台访问源码报错:Uncaught TypeError: Cannot read property 'length' of undefined。这是什么原因,谁知道啊。 链接为http://www.runoob.com/jqueryui/example-autocomplete.html。在里面的远程 JSONP 数据源demo,没有正确的数据。
javascript写一个九宫格运行出错
用循环判断胜负的时候在win[h].length处报错,Uncaught TypeError: Cannot read property 'length' of undefined,请高手解答一下,感激不尽. ![图片说明](https://img-ask.csdn.net/upload/201510/05/1444015037_990666.png) ![图片说明](https://img-ask.csdn.net/upload/201510/05/1444015082_484378.png)
微信小程序报错:thirdScriptError 求解决方案。
#错误提示:thirdScriptError: Cannot read property 'songlist' of undefined;at api request success callback function TypeError: Cannot read property 'songlist' of undefined #源代码: ``` // pages/list/list.js var config = require('../../config.js'); var formatSeconds = function(value) { var time = parseFloat(value); var m = Math.floor(time / 60); var s = time - m * 60; return [m, s].map(formatNumber).join(':'); function FormatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } } Page({ data: { board: '', songlist: [], loading: false, }, onLoad: function(options) { var self = this; var topid = options.type; this.setData({ loading: true }) wx: wx.request({ url: config.config.hotUrl, data: { topid: topid }, success: function(e) { if (e.statusCode == 200) { var songlist = e.data.showapi_res_body_pagebean.songlist; for (var i = 0; i < songlist.length; i++) { songlist[i].seconds = formatSeconds(songlist[i].seconds); } self.setData({ board: e.data.showapi_res_body_pagebean.songlist[0].albumpic_big, songlist: songlist, loading: false }); wx.setStorageSync('songlist', songlist); } } }); } }) ```
JS自定义String对象reverse方法
自定义一个reverse方法,浏览器显示Uncaught TypeError: Cannot read property 'concat' of undefined, 是否因为this.charAt[i]为undefine类型,为什么? <script type="text/javascript"> String.prototype.reverse = function(){ var str = new String(); for(var i=this.length-1; i>-1; i--){ str = str.concat(this.charAt[i]); } return str; } var str = new String("String"); document.write(str.reverse()); </script>
JS split报错问题,使用了Echart
{ title: '天数', field: 'ChiD', width: 120, formatter: function (value, row, index) { var CD1 = ""; CD1 = value; var CMingX = []; CMingX = CD1.split(","); value = ""; for(var c=0;c<CMingX.length-1;c++) { value += CMingX[c] + "\n"; } return value; } value =" 总计:8 天,2015-07-01,2015-07-02,2015-07-03,2015-07-06,2015-07-07,2015-07-08,2015-07-09,2015-07-10," 目的 = 总计:8 天 2015-07-01 2015-07-02 2015-07-03 2015-07-06 2015-07-07 2015-07-08 2015-07-09 2015-07-10 现在报错:Uncaught TypeError: Cannot read property 'split' of undefined
Vue的报错,一个仿造百度的下拉菜单
``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>下拉菜单</title> <script src='http://cdn.jsdelivr.net/vue/1.0.7/vue.min.js'></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.js"></script> <style type="text/css"> .gray { background-color: #ccc; color: gold; } </style> </head> <body> <div id="box"> <input type="text" @keyup='get()' v-model='t1' /> <ul > <li v-for='value in myData'>{{value}}</li> </ul> <p v-show='myData.length === 0'>暂无数据。。。</p> </div> <!--https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&json=1&p=3&sid=&req=2&csor=1&cb=jQuery1102005335343900131995_1480232231511&_=1480232231514--> <script> new Vue({ el:'body', data:{ myData:[], t1:'' }, methods:{ get:function(){ this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su' , { wd:this.t1, },{ json:'cb' }).then(function(res){ this.myData = res.data.s; } , function(res){ console.log(res.status); }); } } }); </script> </body> </html> ``` 错误是这样的: su?callback=_jsonpx6o0z3kbkvsubwkyvd0lik9:1 Uncaught TypeError: Cannot read property 'sug' of undefined(anonymous function) @ su?callback=_jsonpx6o0z3kbkvsubwkyvd0lik9:1 vue-resource.js:1276 Uncaught (in promise) SyntaxError: Unexpected token u in JSON at position 0(…)
求大神帮忙指点下,怎么能让上传的图片分别预览
HTML代码 ``` <div class="big_box"> <div class="show_img" id="showidcardPh"></div> <div class="uploader_img"> <input id="idcard_ph" name="file" type="file" capture="camera" accept="image/*" class="manner"/> </div> </div> <div class="big_box"> <div class="show_img" id="showidcardPho"></div> <div class="uploader_img"> <input id="idcard_phc" name="file" type="file" capture="camera" accept="image/*" class="manner"/> </div> </div> ``` JS代码 ``` $(".manner").change(function () { var fil = $(this).files; for (var i = 0; i < fil.length; i++) { reads(fil[i]); } }); function reads(fil){ var reader = new FileReader(); reader.readAsDataURL(fil); reader.onload = function(){ var num = document.getElementsByClassName("pic").length; if (num == 0){ $(".uploader_img").css({'display': 'none'}); var showPicDiv = document.getElementById("showidcardPh"); showPicDiv.innerHTML += '<div class="pic" style="float:left;margin-bottom:0.6rem;margin-left:0.5rem;border:1px solid #C6C6C6;width:150px;height:130px;text-align:center;display:inline-block;position:relative;z-index:300">'+ '<img class="goodsPico" style="width:90px;height:70px;" src="'+reader.result+'"></img>'+ '<div class="red_border"></div>'+ '<img class="delete_icon" src="../images/delete_icon-18-18.png" Onclick="delPic(this)"></img></div>'; } }; } /* 功能:删除上传图片显示预览*/ function delPic(obj){ var nowPic = $(obj).parent().remove(); $(".uploader_img").css({'display': 'block'}); } ``` 现在运行后,点击上传,这段代码报错 i < fil.length; i++) { Uncaught TypeError: Cannot read property 'length' of undefined 求大神帮忙修改下,对JS和JQ不是太精通
又是风骚的js错误 f**k
我想实现的功能很简单 在panel的item里移除掉一个gridpanel然后再加上另外一个gridpanel,最后重新布局 [code="java"] alert(Ext.getCmp('NewsView').items.length); //2个item //移除当前panle 加载另一个panel Ext.getCmp('NewsView').remove('NewsGrid'); //随便整个panel var data1=[ [1, 'asdasd', 'asdasd'], [2, 'asxcvbcv', 'asdwqdasd'] ]; var store1=new Ext.data.SimpleStore({data:data1,fields:["id","name","mina"]}); var grid1 = new Ext.grid.GridPanel({ title:"title", height:150, width:500, columns:[{header:"sawayika",dataIndex:"name"}, {header:"yisilan",dataIndex:"mina"}], store:store1, }); alert(Ext.getCmp('NewsView').items.length); //1个item Ext.getCmp('NewsView').add(grid1); Ext.getCmp('NewsView').doLayout(true); //这句话会报错,如果注释掉就没问题 但是panel没有重新布局 alert(Ext.getCmp('NewsView').items.length); // 如果上面一句话注释掉就是2个 [/code] chrome下报错:[b][color=red]Uncaught TypeError: Cannot read property 'style' of undefined Ext.Element.addMethods.setLeftTopext-all.js:7 Ext.BoxComponent.Ext.extend.setPositionext-all.js:7 Ext.layout.BorderLayout.Region.applyLayoutext-all.js:7 Ext.layout.BorderLayout.Ext.extend.onLayoutext-all.js:7 Ext.layout.ContainerLayout.Ext.extend.layoutext-all.js:7 Ext.Container.Ext.extend.doLayout[/color][/b] ff报错:[b][color=red]b.dom is undefined[/color][/b] ie报错:[b][color=red]'dom.style' 为空或不是对象[/color][/b] 基本意思是说没有定义style,哪里要定义style啊,这个extjs我才接触几天啊 肿么办啊? 删除panel前 [img]http://dl.iteye.com/upload/attachment/546282/6c5996e4-7fc9-3209-b51f-6c9bac192c7d.jpg[/img] 加了panel后 [img]http://dl.iteye.com/upload/attachment/546284/7f51db29-a305-3616-8352-e4d19d77cba8.jpg[/img]
安装了heroku的CLI工具包后,在mac终端登录时出现错误
$ heroku login heroku: Enter your login credentials Email: TypeError: Cannot read property 'body' of undefined at new HerokuAPIError (/usr/local/Cellar/heroku/7.0.86/libexec/node_modules/@heroku-cli/command/lib/api_client.js:12:33) at Login.login (/usr/local/Cellar/heroku/7.0.86/libexec/node_modules/@heroku-cli/command/lib/login.js:78:19)# New Document 本人初学ruby on rails,这些错误代码是安装的工具自带的,而且是最新版,重新安装过了也没用,https://devcenter.heroku.com/articles/heroku-cli 安装的官网在这里,按照步骤操作的,为什么会出现这个问题呢,希望大神们帮帮我!js文件代码如下。 # 第一个: "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const errors_1 = require("@oclif/errors"); const netrc_parser_1 = tslib_1.__importDefault(require("netrc-parser")); const url = tslib_1.__importStar(require("url")); const deps_1 = tslib_1.__importDefault(require("./deps")); const login_1 = require("./login"); const vars_1 = require("./vars"); class HerokuAPIError extends errors_1.CLIError { constructor(httpError) { let options = httpError.body; if (!options || !options.message) throw httpError; let info = []; if (options.id) info.push(`Error ID: ${options.id}`); if (options.app && options.app.name) info.push(`App: ${options.app.name}`); if (options.url) info.push(`See ${options.url} for more information.`); if (info.length) super([options.message, ''].concat(info).join('\n')); else super(options.message); this.http = httpError; this.body = options; } } exports.HerokuAPIError = HerokuAPIError; class APIClient { constructor(config, options = {}) { this.config = config; this.options = options; this._login = new login_1.Login(this.config, this); this.config = config; if (options.required === ‘undefined’) options.required = true; options.preauth = options.preauth !== false; this.options = options; let apiUrl = url.URL ? new url.URL(vars_1.vars.apiUrl) : url.parse(vars_1.vars.apiUrl); let envHeaders = JSON.parse(process.env.HEROKU_HEADERS || '{}'); this.preauthPromises = {}; let self = this; const opts = { host: apiUrl.host, headers: Object.assign({ accept: 'application/vnd.heroku+json; version=3', 'user-agent': `heroku-cli/${self.config.version} ${self.config.platform}` }, envHeaders), }; this.http = class APIHTTPClient extends deps_1.default.HTTP.HTTP.create(opts) { static async twoFactorRetry(err, url, opts = {}, retries = 3) { const app = err.body.app ? err.body.app.name : null; if (!app || !options.preauth) { opts.headers = opts.headers || {}; opts.headers['Heroku-Two-Factor-Code'] = await self.twoFactorPrompt(); return this.request(url, opts, retries); } else { // if multiple requests are run in parallel for the same app, we should // only preauth for the first so save the fact we already preauthed if (!self.preauthPromises[app]) { self.preauthPromises[app] = self.twoFactorPrompt().then((factor) => self.preauth(app, factor)); } await self.preauthPromises[app]; return this.request(url, opts, retries); } } static async request(url, opts = {}, retries = 3) { opts.headers = opts.headers || {}; if (!Object.keys(opts.headers).find(h => h.toLowerCase() === 'authorization')) { opts.headers.authorization = `Bearer ${self.auth}`; } retries--; try { return await super.request(url, opts); } catch (err) { if (!(err instanceof deps_1.default.HTTP.HTTPError)) throw err; if (retries > 0) { if (opts.retryAuth !== false && err.http.statusCode === 401 && err.body.id === 'unauthorized') { if (!self.authPromise) self.authPromise = self.login(); await self.authPromise; opts.headers.authorization = `Bearer ${self.auth}`; return this.request(url, opts, retries); } if (err.http.statusCode === 403 && err.body.id === 'two_factor') { return this.twoFactorRetry(err, url, opts, retries); } } throw new HerokuAPIError(err); } } }; } get twoFactorMutex() { if (!this._twoFactorMutex) { this._twoFactorMutex = new deps_1.default.Mutex(); } return this._twoFactorMutex; } get auth() { if (!this._auth) { if (process.env.HEROKU_API_TOKEN && !process.env.HEROKU_API_KEY) deps_1.default.cli.warn('HEROKU_API_TOKEN is set but you probably meant HEROKU_API_KEY'); this._auth = process.env.HEROKU_API_KEY; if (!this._auth) { deps_1.default.netrc.loadSync(); this._auth = deps_1.default.netrc.machines[vars_1.vars.apiHost] && deps_1.default.netrc.machines[vars_1.vars.apiHost].password; } } return this._auth; } set auth(token) { delete this.authPromise; this._auth = token; } twoFactorPrompt() { deps_1.default.yubikey.enable(); return this.twoFactorMutex.synchronize(async () => { try { let factor = await deps_1.default.cli.prompt('Two-factor code', { type: 'mask' }); deps_1.default.yubikey.disable(); return factor; } catch (err) { deps_1.default.yubikey.disable(); throw err; } }); } preauth(app, factor) { return this.put(`/apps/${app}/pre-authorizations`, { headers: { 'Heroku-Two-Factor-Code': factor }, }); } get(url, options = {}) { return this.http.get(url, options); } post(url, options = {}) { return this.http.post(url, options); } put(url, options = {}) { return this.http.put(url, options); } patch(url, options = {}) { return this.http.patch(url, options); } delete(url, options = {}) { return this.http.delete(url, options); } stream(url, options = {}) { return this.http.stream(url, options); } request(url, options = {}) { return this.http.request(url, options); } login(opts = {}) { return this._login.login(opts); } async logout() { try { await this._login.logout(); } catch (err) { errors_1.warn(err); } delete netrc_parser_1.default.machines['api.heroku.com']; delete netrc_parser_1.default.machines['git.heroku.com']; await netrc_parser_1.default.save(); } get defaults() { return this.http.defaults; } } exports.APIClient = APIClient; # 第二个: "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const color_1 = tslib_1.__importDefault(require("@heroku-cli/color")); const cli_ux_1 = tslib_1.__importDefault(require("cli-ux")); const fs = tslib_1.__importStar(require("fs-extra")); const http_call_1 = tslib_1.__importDefault(require("http-call")); const netrc_parser_1 = tslib_1.__importDefault(require("netrc-parser")); const opn = require("opn"); const os_1 = require("os"); const path = tslib_1.__importStar(require("path")); const api_client_1 = require("./api_client"); const vars_1 = require("./vars"); const debug = require('debug')('heroku-cli-command'); const headers = (token) => ({ headers: { accept: 'application/vnd.heroku+json; version=3', authorization: `Bearer ${token}` } }); class Login { constructor(config, heroku) { this.config = config; this.heroku = heroku; this.loginHost = process.env.HEROKU_LOGIN_HOST || 'https://cli-login.heroku.com'; } async login(opts = {}) { await this.loadSettings(); let loggedIn = false; try { // timeout after 10 minutes setTimeout(() => { if (!loggedIn) cli_ux_1.default.error('timed out'); }, 1000 * 60 * 10).unref(); if (process.env.HEROKU_API_KEY) cli_ux_1.default.error('Cannot log in with HEROKU_API_KEY set'); await netrc_parser_1.default.load(); const previousEntry = netrc_parser_1.default.machines['api.heroku.com']; let input = opts.method; const defaultMethod = this.settings.method || 'interactive'; if (!input) { if (opts.expiresIn) { // can't use browser with --expires-in input = 'interactive'; } else if (this.enableBrowserLogin()) { input = await cli_ux_1.default.prompt(`heroku: Login with [${color_1.default.green('b')}]rowser, [${color_1.default.green('i')}]nteractive, or [${color_1.default.green('s')}]so (enterprise-only)`, { default: defaultMethod }); } else { input = defaultMethod || 'interactive'; } } try { if (previousEntry && previousEntry.password) await this.logout(previousEntry.password); } catch (err) { cli_ux_1.default.warn(err); } let auth; delete this.settings.method; switch (input) { case 'b': case 'browser': auth = await this.browser(); break; case 'i': case 'interactive': auth = await this.interactive(previousEntry && previousEntry.login, opts.expiresIn); break; case 's': case 'sso': auth = await this.sso(); break; default: return this.login(opts); } await this.saveToken(auth); await this.saveSettings(); } catch (err) { throw new api_client_1.HerokuAPIError(err); } finally { loggedIn = true; } } async logout(token = this.heroku.auth) { if (!token) return debug('no credentials to logout'); const requests = []; // for SSO logins we delete the session since those do not show up in // authorizations because they are created a trusted client requests.push(http_call_1.default.delete(`${vars_1.vars.apiUrl}/oauth/sessions/~`, headers(token)) .catch(err => { if (!err.http) throw err; if (err.http.statusCode === 404 && err.http.body && err.http.body.id === 'not_found' && err.http.body.resource === 'session') { return; } if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') { return; } throw err; })); // grab all the authorizations so that we can delete the token they are // using in the CLI. we have to do this rather than delete ~ because // the ~ is the API Key, not the authorization that is currently requesting requests.push(http_call_1.default.get(`${vars_1.vars.apiUrl}/oauth/authorizations`, headers(token)) .then(async ({ body: authorizations }) => { // grab the default authorization because that is the token shown in the // dashboard as API Key and they may be using it for something else and we // would unwittingly break an integration that they are depending on const d = await this.defaultToken(); if (d === token) return; return Promise.all(authorizations .filter(a => a.access_token && a.access_token.token === this.heroku.auth) .map(a => http_call_1.default.delete(`${vars_1.vars.apiUrl}/oauth/authorizations/${a.id}`, headers(token)))); }) .catch(err => { if (!err.http) throw err; if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') { return []; } throw err; })); await Promise.all(requests); } async browser() { const { body: urls } = await http_call_1.default.post(`${this.loginHost}/auth`); // TODO: handle browser const url = `${this.loginHost}${urls.browser_url}`; debug(`opening browser to ${url}`); const cp = await opn(url, { wait: false }); cp.on('error', cli_ux_1.default.error); const showUrl = () => cli_ux_1.default.warn(`Cannot open browser. Go to ${color_1.default.greenBright(url)} to finish login or run ${color_1.default.cmd('heroku login --interactive')}\n`); if (process.env.HEROKU_TESTING_HEADLESS_LOGIN === '1') showUrl(); cp.on('close', code => { if (code !== 0) showUrl(); }); cli_ux_1.default.action.start('Waiting for login'); const { body: auth } = await http_call_1.default.get(`${this.loginHost}${urls.cli_url}`, { headers: { authorization: `Bearer ${urls.token}`, } }); if (auth.error) cli_ux_1.default.error(auth.error); this.heroku.auth = auth.access_token; cli_ux_1.default.action.start('Logging in'); const { body: account } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/account`, headers(auth.access_token)); cli_ux_1.default.action.stop(); return { login: account.email, password: auth.access_token, }; } async interactive(login, expiresIn) { process.stderr.write('heroku: Enter your login credentials\n'); login = await cli_ux_1.default.prompt('Email', { default: login }); let password = await cli_ux_1.default.prompt('Password', { type: 'hide' }); let auth; try { auth = await this.createOAuthToken(login, password, { expiresIn }); } catch (err) { if (!err.body || err.body.id !== 'two_factor') throw err; let secondFactor = await cli_ux_1.default.prompt('Two-factor code', { type: 'mask' }); auth = await this.createOAuthToken(login, password, { expiresIn, secondFactor }); } this.heroku.auth = auth.password; return auth; } async createOAuthToken(username, password, opts = {}) { function basicAuth(username, password) { let auth = [username, password].join(':'); auth = Buffer.from(auth).toString('base64'); return `Basic ${auth}`; } let headers = { accept: 'application/vnd.heroku+json; version=3', authorization: basicAuth(username, password) }; if (opts.secondFactor) headers['Heroku-Two-Factor-Code'] = opts.secondFactor; const { body: auth } = await http_call_1.default.post(`${vars_1.vars.apiUrl}/oauth/authorizations`, { headers, body: { scope: ['global'], description: `Heroku CLI login from ${os_1.hostname()}`, expires_in: opts.expiresIn || 60 * 60 * 24 * 365 // 1 year } }); return { password: auth.access_token.token, login: auth.user.email }; } async saveToken(entry) { const hosts = [vars_1.vars.apiHost, vars_1.vars.httpGitHost]; hosts.forEach(host => { if (!netrc_parser_1.default.machines[host]) netrc_parser_1.default.machines[host] = {}; netrc_parser_1.default.machines[host].login = entry.login; netrc_parser_1.default.machines[host].password = entry.password; delete netrc_parser_1.default.machines[host].method; delete netrc_parser_1.default.machines[host].org; }); if (netrc_parser_1.default.machines._tokens) { netrc_parser_1.default.machines._tokens.forEach((token) => { if (hosts.includes(token.host)) { token.internalWhitespace = '\n '; } }); } await netrc_parser_1.default.save(); } async defaultToken() { try { const { body: authorization } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/oauth/authorizations/~`, headers(this.heroku.auth)); return authorization.access_token && authorization.access_token.token; } catch (err) { if (!err.http) throw err; if (err.http.statusCode === 404 && err.http.body && err.http.body.id === 'not_found' && err.body.resource === 'authorization') return; if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') return; throw err; } } enableBrowserLogin() { if (!process.env.HEROKU_LOGIN_HOST) return false; if (this.config.name === '@heroku-cli/command') return true; return this.config.channel !== 'stable'; } async sso() { let url = process.env.SSO_URL; let org = process.env.HEROKU_ORGANIZATION || this.settings.org; if (!url) { if (org) { org = await cli_ux_1.default.prompt('Organization name', { default: org }); } else { org = await cli_ux_1.default.prompt('Organization name'); } url = `https://sso.heroku.com/saml/${encodeURIComponent(org)}/init?cli=true`; } cli_ux_1.default.action.start('Opening browser for login'); // TODO: handle browser debug(`opening browser to ${url}`); await opn(url, { wait: false }); const password = await cli_ux_1.default.prompt('Access token', { type: 'mask' }); cli_ux_1.default.action.start('Validating token'); this.heroku.auth = password; const { body: account } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/account`, headers(password)); this.settings.method = 'sso'; this.settings.org = org; return { password, login: account.email }; } async loadSettings() { try { this.settings = await fs.readJSON(this.settingsPath); } catch (err) { if (err.code !== 'ENOENT') cli_ux_1.default.warn(err); else debug(err); this.settings = {}; } } async saveSettings() { try { if (Object.keys(this.settings).length === 0) { await fs.remove(this.settingsPath); } else { await fs.outputJSON(this.settingsPath, this.settings); } } catch (err) { cli_ux_1.default.warn(err); } } get settingsPath() { return path.join(this.config.dataDir, 'login.json'); } } exports.Login = Login;
130 个相见恨晚的超实用网站,一次性分享出来
文末没有公众号,只求 点赞 + 关注 搞学习 知乎:www.zhihu.com 大学资源网:http://www.dxzy163.com/ 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:stu
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
java源码分析 Arrays.asList()与Collections.unmodifiableList()
举个栗子 本章示例代码来自java编程思想——17.4.1未获支持的操作——Unsupported类。 import java.util.*; public class Unsupported { static void test(String msg, List&lt;String&gt; list) { System.out.println("--- " + msg
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
蓝桥杯知识点汇总:基础知识和常用算法
文章目录JAVA基础语法:算法竞赛常用的JAVA API:基础算法待更: 此系列包含蓝桥杯所考察的绝大部分知识点,一共有基础语法,常用API,基础算法和数据结构,和往年真题四部分,虽然语言以JAVA为主,但算法部分是相通的,C++组的小伙伴也可以看哦。所有文章的链接都会在此公布,还有很多没有更新,会持续更新,如果大佬发现文章有错误的地方请指正,我会十分感谢。另外,有什么问题可私信我~ JAVA基础
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 原理 1.将几张图片叠在一起,通过改变"display:block"和"display:none"这两个属性实现替换。 (前提:在css中给所有图片加上display:none属性) 2.不用将图片叠在一起,将一个div当做"窗口",通过"of
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
Java与Python学习通法(1)和(2)序言和编程语言发展史怎么学
大家好,我是 jacky 朱元禄,很高兴跟大家一起学习 《Java与Python学习通法系列》。 首先,说一下,我为什么要录这个课; 我们都已经知道Java 和 Python的视频教程和书籍,可以说是非常非常多了,那我录制本系列课的意义是什么呢? (1)课程特色一:我想告诉大家学习编程语言是有捷径的,这个捷径就是 理解技术背后的“哲学逻辑”,或者说是“人文逻辑”,相信你听完 jack
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
阿里架构师花近十年时间整理出来的Java核心知识pdf(Java岗)
由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容! 整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。       欢迎大家加入java学习交流社区  点击加入   可获取文中文档       小编推荐:     
Python基础知识点梳理
python基础知识点梳理 摘要: 本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾。python的详细语法介绍可以查看官方编程手册,也有一些在线网站对python语法进行了比较全面的介绍,比如菜鸟教程: python3 教程|菜鸟教程 为了方便聚焦知识点,本文涉及的操作实例并不多,想学好一门语言关键还得自己多编码多实践。 python语
2020年2月全国程序员工资统计,平均工资13716元
趋势 2020年2月,中国大陆程序员平均工资13716元,比上个月增加。具体趋势如图: 各主要程序员城市工资变化 城市 北京,上海,深圳,杭州,广州四地的工资最高。 city 平均工资 最低工资 中位数 最高工资 招聘人数 百分比 北京 18098 3750 15000 45000 20529 9.53% 深圳 16903 5750 15000 37500 30941 14
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
为什么说程序员做外包没前途?
之前做过不到3个月的外包,2020的第一天就被释放了,2019年还剩1天,我从外包公司离职了。我就谈谈我个人的看法吧。首先我们定义一下什么是有前途 稳定的工作环境 不错的收入 能够在项目中不断提升自己的技能(ps:非技术上的认知也算) 找下家的时候能找到一份工资更高的工作 如果你目前还年轻,但高不成低不就,只有外包offer,那请往下看。 外包公司你应该
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
jQuery实现高仿QQ音乐
几个实现的效果看视频吧: bandicam 2020-02-05 16-28-20-127 动图很是不清楚 github地址奉上:https://github.com/tangmusenLiu/Large-warehouse https://github.com/tangmu
《请停止无效的努力》读书笔记
一、如何快速找到你的天赋优势 1、人的价值定位 1.1、冰山模型 &nbsp; &nbsp; &nbsp; &nbsp; 你能创造多大的价值,离不开三大内在因素: 第一要素:知识和技能,位于冰山显露的部分,是非常显性,容易展示出来的; 第二要素:能力,比如:思考能力、人际交往能力等,需要通过仔细的行为观察才能看出,位于冰山的中间部分; 第三要素:天赋。包括潜在能力、性格特质、动机、价值观等
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问