MicrosoftVisualStudio2010做的C#简单的鼠标钩子应用实例实例,实现实时监控鼠标位置(需要编译后,在Release文件夹那里运行)主要代码:publicdelegateintHookProc(intnCode,IntPtrwParam,IntPtrlParam);//定义钩子句柄publicstaticintm_iHock=0;//定义钩子类型publicconstintWH_MOUSE_LL=14;publicHookProcHookProcVar;//安装钩子[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhInstance,intthreadId);//卸载钩子[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]publicstaticexternboolUnhookWindowsHookEx(intidHook);//调用下一个钩子[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]publicstaticexternintCallNextHookEx(intidHook,intnCode,IntPtrwParam,IntPtrlParam);[StructLayout(LayoutKind.Sequential)]
2024/6/2 16:02:25 69KB VS2010 鼠标钩子
1
ContentsPrefacevTypographicalConventionsxi1Introduction11.1AQuickOverviewofS.......................31.2UsingS...............................51.3AnIntroductorySession......................61.4WhatNext?.............................122DataManipulation132.1Objects...............................132.2Connections.............................202.3DataManipulation.........................272.4TablesandCross-Classification...................373TheSLanguage413.1LanguageLayout..........................413.2MoreonSObjects.........................443.3ArithmeticalExpressions......................473.4CharacterVectorOperations....................513.5FormattingandPrinting.......................543.6CallingConventionsforFunctions.................553.7ModelFormulae...........................563.8ControlStructures..........................583.9ArrayandMatrixOperations....................603.10IntroductiontoClassesandMethods................664Graphics694.1GraphicsDevices..........................714.2BasicPlottingFunctions......................72viiviiiContents4.3EnhancingPlots...........................774.4FineControlofGraphics......................824.5TrellisGraphics...........................895UnivariateStatistics1075.1ProbabilityDistributions......................1075.2GeneratingRandomData......................1105.3DataSummaries...........................1115.4ClassicalUnivariateStatistics....................1155.5RobustSummaries.........................1195.6DensityEstimation.........................1265.7BootstrapandPermutationMethods................1336LinearStatisticalModels1396.1AnAnalysisofCovarianceExample................1396.2ModelFormulaeandModelMatrices...............1446.3RegressionDiagnostics.......................1516.4SafePrediction....................
2024/5/10 17:01:05 2.73MB R Statistics
1
(先打开一个程序在计算机中到底是如何运行的.html)2.虚拟内存到底是什么?为什么我们在C语言中看到的地址是假的?3.虚拟地址空间以及编译模式4.C语言内存对齐,提高寻址效率5.内存分页机制,完成虚拟地址的映射6.分页机制究竟是如何实现的?7.MMU部件以及对内存权限的控制8.Linux下C语言程序的内存布局(内存模型)9.Windows下C语言程序的内存布局(内存模型)10.用户模式和内核模式11.栈(Stack)是什么?栈溢出又是怎么回事?12.一个函数在栈上到底是怎样的?13.函数调用惯例(CallingConvention)
2024/4/24 22:23:15 4.94MB 内存管理 C语言
1
1. 楼层由上至下依次编号为9,8,7,6,5,4,3,2,1,0。
每层都有向上和向下两个按钮,对应20个变量callup[0...9]和calldown[0...9]。
电梯内10个目标层按钮对应变量out[0...9]。
有人按下某个按钮时,相应的变量就增1,一旦要求满足后,该变量就减1。
当有多人的需求相同时,相应的处理时间就增长,用于模拟真实的情况。
2. 电梯处于三种状态之一:UP(上行),DOWN(下行)和Idle(等候)。
如果电梯处于Idle状态且不在1层超过20个时间单位时,则驶回1层。
当电梯处于Idle状态时,一旦收到前往另一层的命令,就转入UP或DOWN状态,执行相应的操作。
3. 其它重要的变量有:floor----当前电梯外乘客所在楼层;
calling----当前电梯外按下按钮的乘客所在的楼层;
up_or_down----电梯外某层按钮的状态(向上箭头或向下箭头);
waittime----电梯空闲时的等待时间;
total----电梯内的总人数(上限为15人);
电梯的数据结构:state----电梯的状态(UP,DOWN,IDLE)current-----电梯目前所处楼层imovingto----电梯的目标楼层队列成员的数据结构:floor―――所在楼层up_down―――目标方向(向上或向下)structqueue*next―――指向下一个成员4. 【进入排队】先在等候队列中查找,若有信息相同(所在楼层相同,目标方向一致)的成员,则对队列无任何操作。
若没有,则在队列末尾插入该人。
5. 【进入电梯】电梯根据人数停留一定时间单位,每进入一个人,从队列中删除该人,callup[ele.current]或者calldown[ele.current]减一,total加一。
6. 【走出电梯】电梯根据人数停留一定时间单位,每出去一个人out[ele.current]减一.7. 【电梯的活动】E1.[在一楼停候]若有人按下一个按钮,则调用相关函数(比如入队,置楼层标志位为1等)处理当前事件.E2.[改变状态]如果电梯处于Up(或Down)状态,但该方向的楼层却无人等待,则要看反方向楼层是否有人等待,而决定置State为Down(或Up)还是Idle。
E3.[让人出入]如果电梯不空且out[ele.current]!=0时,则电梯等候在该楼层出电梯的人离开。
接着检验在该楼层是否有等候前往同一方向去的乘客,若有则等候他们进入电梯。
总原则是先下后上。
E4.[在某楼层(非1楼)停候]若电梯到达目标楼层后,队列为空,则电梯在该楼层停候一定时间,在停候期间若有新的呼叫,则立即转入处理程序处理,否则返回一楼停候。
8. 电梯在上升或下降过程中需要不停地对当前方向上的最终楼层作调整。
比如当前向上,最终楼层为6楼,而有乘客在8楼按了按钮,则最终楼层调整为8楼。
相反方向同理。
2024/4/2 8:05:07 59KB 电梯模拟 用C语言写的
1
使用GATK进行SNPCallling的自动化流程。
基于GATK3.3以上版本的HaplotypeCaller标准流程进行,测试脚本以sra文件为最初输入,将读取文件见内的所有sra文件(视为同一个样本的数据),进行SNPCalling产生GVCF,然后用户可自行进行jointCall
1
leetcodepython题解,包含大量leetcode题目的解法,源代码,python实现CourseSchedule21.4.4Numberofislands14.5HeapsMergeKSortedLinkedLists1.5.1KthLargestElementinanArray1.5.2Arrays1.62sum‖l1.62SumⅢ1.6.2ContainsDuplicate1.6.3RotateArray1.643SumSmaller1.653Sumclosest1.663Sum1.6.7TwoSum1.68PlusOne1.6.9BestTimetoBuyandSellStock1.6.10Shortestworddistance1.6.11Movezeroes1.6.12ContainsDuplicate1.6.13MajorityElement1.6.14RemoveDuplicatesfromSortedArray1.6.15NestedListWeightSum1.6.16NestedListWeightedSumIl1.6.17Removeelement1.6.18IntersectionofTwoArraysll1.6.19MergeSortedArrays1.6.20ReverseVowelsofaString1.6.21IntersectionofTwoArrays1.6.22Containerwithmostwater1.6.23ProductofArrayExceptSelf1.6.24TrappingRainWater1.6.25MaximumSubarray1.6.26BestTimetoBuyandSellStockIl1.6.27FindMinimuminRotatedSortedArray1.6.28Pascal'sTriangle1.6.29Pascal'sTriangle‖l1.6.30SummaryRanges1.6.31MissingNumber1.6.32StringsValidAnagram1.7.1Validpalindrome1.7.2WordPattern1.7.3ValidParentheses1.7.4IsomorphicStrings1.7.5ReverseString1.7.6BitManipulationSumofTwoIntegers18.1SingleNumber18.2Singlenumber‖18.3SingleNumberIll1.8.4Maths1.9ReverseInteger1.9.1Palindromenumber19.2Pow(x,n)19.3Subsets1.94Subsets‖195FractiontoRecurringDecimal19.6Excelsheetcolumnnumber19.7Excelsheetcolumntitle19.8FactorialTrailingzeros199HappyNumber1.9.10Countprimes1.9.11Plusone19.12DivideTwoIntegers19.13MultiplyStrings1.9.14MaxPointsonaline1.9.15ProductofArrayExceptSelf19.16Powerofthree19.17IntegerBreak1.9.18Poweroffour9.19Adddigits1.9.20UglyNumber1.9.21glyNumberll1.9.22SuperUglyNumber19.23FindKpairswithsmallestsums1.924SelfCrossing1.9.25Paintfence1.9.26Bulbswitcher19.27Nimgame1.9.28Matrix1.10RotateImage1.10.1SetmatrixZeroes1.10.2Searcha2DMatrix1.10.3Searcha2dMatrixl1.10.4SpiralMatrix1.10.5SpiralMatrix‖l1.10.6DesignLRUCache1.11.1IntroductionMyLeetcodeSolutionsinPythonThisbookwillcontainmysolutionsinPythontotheleetcodeproblems.Currently,willjusttrytoposttheacceptedsolutions.TheplanistoeventuallyincludedetailedexplanationsofeachandeverysolutionamdoingthisjustforfunLinkedListCycleLinkedListCvcleGivenalinkedlist,determineifithasacycleinitFollowup:Canyousolveitwithoutusingextraspace?Url:https://leetcode.com/problems/linked-list-cycle/Definitionforsingly-linkedlistclassListNodeobject)###definit(self,x)self,val=xself,nextNoneclassSolution(object):defhasCycle(self,head)IItypehead:ListNodertype:boolIIIIifhead=nonereturnfalseelsefastheadslow=headWhilefastnoneandfast.nextnonesloW=slownextfastfast.nextnextiffast=slow:breaki千fastNoneorfast.next=nonereturnFalseeliffast=slowreturntruereturnfalseLinkedListCycleReverseLinkedListReverseLinkedlistReverseasinglylinkedlistUrl:https://eetcode.com/problems/reverse-linked-list/definitionforsingly-linkedlist#tclassListNode(object):##def-init(self,x)self.∨al=xselfnextnoneclassSolution(object):defreverseList(self,head)11IIl1typehead:ListNodertype:ListNodeifhead=nonereturnnoneelifhead!=noneandheadnext=nonereturnheadelsetempNonenextnodenoneWhileheadNonenextnodeheadnexthead.nexttemptemp=headheadnextnodereturntempDeletenodeinalinkedlistDeletenodeinalinkedlistWriteafunctiontodeleteanode(exceptthetail)inasinglylinkedlist,givenonlyaccesstothatnodeSupposedthelinkedlistis1->2->3->4andyouaregiventhethirdnodewithvalue3,thelinkedlistshouldbecome1->2->4aftercallingyourfunctionUrl:https://eetcode.com/problems/delete-node-in-a-linked-list/Definitionforsingly-linkedlistclassListNode(object):#def-init(self,x)#self,valxself,nextNoneclasssolution(object):defdeleteNode(self,node):IIlIItypenode:ListNodertype:voidDonotreturnanythingmodifynodein-placeinsteadI111fnode=nonepasse⊥se:nextnodenode.nextnodevalnextnodevalnode.nextnextnode,next
2023/11/8 17:06:47 574KB leetcode python题解
1
MERN运动APP概括该项目使用Mongoose,MongoDB,Express,Node,HTML,CSS,Bootstrap,ReactRouter和React.js。
它使用户可以通过API或网站访问和保存运动日志。
可以在这里找到::报名表格用户可以注册一个用户ID。
//thistakestheusernamefromthis.state.userInputandbuildsanewuser //inthedatabase putUserToDb(){ varnewUser=this.state.newUserInput; console.log('callingaxios.postfromreact'); console.log('addingnewusertodatabase'); axi
2023/8/6 17:28:45 198KB JavaScript
1
LegalLinesandDisclaimersInteltechnologies’featuresandbenefitsdependonsystemconfigurationandmayrequireenabledhardware,softwareorserviceactivation.LearnmoreatIntel.com,orfromtheOEMorretailer.Nocomputersystemcanbeabsolutelysecure.Inteldoesnotassumeanyliabilityforlostorstolendataorsystemsoranydamagesresultingfromsuchlosses.YoumaynotuseorfacilitatetheuseofthisdocumentinconnectionwithanyinfringementorotherlegalanalysisconcerningIntelproductsdescribedherein.YouagreetograntIntelanon-exclusive,royalty-freelicensetoanypatentclaimthereafterdraftedwhichincludessubjectmatterdisclosedherein.Nolicense(expressorimplied,byestoppelorotherwise)toanyintellectualpropertyrightsisgrantedbythisdocument.Theproductsdescribedmaycontaindesigndefectsorerrorsknownaserratawhichmaycausetheproducttodeviatefrompublishedspecifications.Currentcharacterizederrataareavailableonrequest.Thisdocumentcontainsinformationonproducts,servicesand/orprocessesindevelopment.Allinformationprovidedhereissubjecttochangewithoutnotice.ContactyourIntelrepresentativetoobtainthelatestIntelproductspecificationsandroadmaps.Inteldisclaimsallexpressandimpliedwarranties,includingwithoutlimitation,theimpliedwarrantiesofmerchantability,fitnessforaparticularpurpose,andnon-infringement,aswellasanywarrantyarisingfromcourseofperformance,courseofdealing,orusageintrade.Copiesofdocumentswhichhaveanordernumberandarereferencedinthisdocumentmaybeobtainedbycalling1-800-5484725orbyvisitingwww.intel.com/design/literature.htm.Intel,Xeon,andtheIntellogoaretrademarksofIntelCorporationintheU.S.and/orothercountries.*Othernamesandbrandsmaybeclaimedasthepropertyofothers.Copyright©2018,IntelCorporation.AllRightsReserved.
2023/7/10 3:20:14 16.4MB Whitle
1
《快学Scala》英文第二版:ScalafortheImpatientSecondEditionCayS.Horstmann目录:1THEBASICSA111.1TheScalaInterpreter11.2DeclaringValuesandVariables41.3Co妹妹onlyUsedTypes51.4ArithmeticandOperatorOverloading61.5MoreaboutCallingMethods81.6TheapplyMethod91.7Scaladoc10Exercises152CONTROLSTRUCTURESANDFUNCTIONSA1172.1ConditionalExpressions182.2StatementTermination192.3BlockExpressionsandAssignments20viiContents2.4InputandOutput212.5Loops222.6AdvancedforLoops242.7Functions252.8DefaultandNamedArgumentsL1262.9VariableArgumentsL1262.10Procedures282.11LazyValuesL1282.12Exceptions29Exercises313WORKINGWITHARRAYSA1353.1Fixed-LengthArrays353.2Variable-LengthArrays:ArrayBuffers363.3TraversingArraysandArrayBuffers373.4TransformingArrays383.5Co妹妹onAlgorithms403.6DecipheringScaladoc413.7MultidimensionalArrays423.8InteroperatingwithJava43Exercises444MAPSANDTUPLESA1474.1ConstructingaMap484.2AccessingMapValues484.3UpdatingMapValues494.4IteratingoverMaps504.5SortedMaps504.6InteroperatingwithJava504.7Tuples514.8Zipping52Exercises52viiiContents5CLASSESA1555.1SimpleClassesandParameterlessMethods555.2PropertieswithGettersandSetters565.3PropertieswithOnlyGetters595.4Object-PrivateFields605.5BeanPropertiesL1615.6AuxiliaryConstructors625.7ThePrimaryConstructor635.8NestedClassesL166Exercises686OBJECTSA1716.1Singletons716.2CompanionObjects726.3ObjectsExtendingaClassorTrait736.4TheapplyMethod736.5ApplicationObjects746.6Enumerations75Exercises777PACKAGESANDIMPORTSA1797.1Packages807.2ScopeRules817.3ChainedPackageClauses837.4Top-of-FileNotation837.5PackageObjects837.6PackageVisibility847.7Imports857.8ImportsCanBeAnywhere857.9RenamingandHidingMembers867.10ImplicitImports86Exercises87ixContents8INHERITANCEA1918.1ExtendingaClass918.2OverridingMethods928.3TypeChecksandCasts938.4ProtectedFieldsandMethods948.5SuperclassConstruction948.6OverridingFields958.7AnonymousSubclasses978.8AbstractClasses978.9AbstractFields978.10ConstructionOrderandEarlyDefinitionsL3988.11TheScalaInheritanceHierarchy1008.12ObjectEqualityL11028.13ValueClassesL2103Exercises1059FILESANDREGULAREXPRESSIONSA11099.1ReadingLines1099.2ReadingCharacters1109.3ReadingTokensandNumbers1119.4ReadingfromURLsandOtherSources1119.5ReadingBinaryFiles1129.6WritingTextFiles1129.7VisitingDirectories1129.8Serialization1139.9ProcessControlA21149.10RegularExpressions1169.11RegularExpressionGroups117Exercises11810TRAITSL112110.1WhyNoMultipleInheritance?12110.2TraitsasInterfaces12310.3TraitswithConcreteImplementations124xContents10.4ObjectswithTraits12510.5LayeredTraits12510.6OverridingAbstractMethodsinTraits12710.7TraitsforRichInterfaces12710.8ConcreteFieldsinTraits12810.9AbstractFieldsinTraits13010.10TraitConstructionOrder13010.11InitializingTraitFields13210.12TraitsExtendingClasses13310.13SelfTypesL213410.14WhatHappensundertheHood135Exercises13711OPERATORSL114111.1Identifiers14211.2InfixOperators14311.3UnaryOperators14311.4AssignmentOperators14411.5Precedence14411.6Associativity14511.7TheapplyandupdateMethods14611.8ExtractorsL214711.9ExtractorswithOneorNoArgumentsL214911.10TheunapplySeqMethodL214911.11DynamicInvocationL2150Exercises15312HIGHER-ORDERFUNCTIONSL115712.1FunctionsasValues15712.2AnonymousFunctions15912.3FunctionswithFunctionParameters16012.4ParameterInference16012.5UsefulHigher-OrderFunctions16112.6Closures162xiContents12.7SAMConversions16312.8Currying16412.9ControlAbstractions16612.10ThereturnExpression167Exercises16813COLLECTIONSA217113.1TheMainCollectionsTraits17213.2MutableandI妹妹utableCollections17313.3Sequences17413.4Lists17513.5Sets17713.6OperatorsforAddingorRemovingElements17813.7Co妹妹onMethods18013.8MappingaFunction18213.9Reducing,Folding,andScanningA318413.10Zipping18713.11Iterators18813.12StreamsA318913.13LazyViewsA319013.14InteroperabilitywithJavaCollections19113.15ParallelCollections193Exercises19414PATTERNMATCHINGANDCASECLASSESA219714.1ABetterSwitch19814.2Guards19914.3VariablesinPatterns19914.4TypePatterns20014.5MatchingArrays,Lists,andTuples20114.6Extractors20214.7PatternsinVariableDeclarations20314.8PatternsinforExpressions20414.9CaseClasses205xiiContents14.10ThecopyMethodandNamedParameters20514.11InfixNotationincaseClauses20614.12MatchingNestedStructures20714.13AreCaseClassesEvil?20814.14SealedClasses20914.15SimulatingEnumerations20914.16TheOptionType21014.17PartialFunctionsL2211Exercises21215ANNOTATIONSA221515.1WhatAreAnnotations?21615.2WhatCanBeAnnotated?21615.3AnnotationArguments21715.4AnnotationImplementations21815.5AnnotationsforJavaFeatures21915.5.1JavaModifiers21915.5.2MarkerInterfaces22015.5.3CheckedExceptions22015.5.4VariableArguments22115.5.5JavaBeans22115.6AnnotationsforOptimizations22215.6.1TailRecursion22215.6.2JumpTableGenerationandInlining22315.6.3ElidingMethods22415.6.4SpecializationforPrimitiveTypes22515.7AnnotationsforErrorsandWarnings226Exercises22716XMLPROCESSINGA222916.1XMLLiterals23016.2XMLNodes23016.3ElementAttributes23216.4EmbeddedExpressions233xiiiContents16.5ExpressionsinAttributes23416.6Unco妹妹onNodeTypes23516.7XPath-likeExpressions23516.8PatternMatching23716.9ModifyingElementsandAttributes23816.10TransformingXML23916.11LoadingandSaving23916.12Namespaces242Exercises24317FUTURESA224717.1RunningTasksintheFuture24817.2WaitingforResults25017.3TheTryClass25117.4Callbacks25117.5ComposingFutureTasks25217.6OtherFutureTransformations25517.7MethodsintheFutureObject25617.8Promises25817.9ExecutionContexts260Exercises26018TYPEPARAMETERSL226518.1GenericClasses26618.2GenericFunctions26618.3BoundsforTypeVariables26618.4ViewBounds26818.5ContextBounds26818.6TheClassTagContextBound26918.7MultipleBounds26918.8TypeConstraintsL326918.9Variance27118.10Co-andContravariantPositions272xivContents18.11ObjectsCan’tBeGeneric27418.12Wildcards275Exercises27519ADVANCEDTYPESL227919.1SingletonTypes28019.2TypeProjections28119.3Paths28219.4TypeAliases28319.5StructuralTypes28319.6CompoundTypes28419.7InfixTypes28519.8ExistentialTypes28619.9TheScalaTypeSystem28719.10SelfTypes28819.11DependencyInjection28919.12AbstractTypesL329119.13FamilyPolymorphismL329319.14Higher-KindedTypesL3296Exercises29920PARSINGA330320.1Gra妹妹ars30420.2CombiningParserOperations30520.3TransformingParserResults30720.4DiscardingTokens30820.5GeneratingParseTrees30920.6AvoidingLeftRecursion31020.7MoreCombinators31120.8AvoidingBacktracking31420.9PackratParsers31420.10WhatExactlyAreParsers?31520.11RegexParsers316Contentsxv20.12Token-BasedParsers31720.13ErrorHandling319Exercises32021IMPLICITSL332321.1ImplicitConversions32421.2UsingImplicitsforEnrichingExistingClasses32421.3ImportingImplicits32521.4RulesforImplicitConversions32621.5ImplicitParameters32821.6ImplicitConversionswithImplicitParameters32921.7ContextBounds32921.8TypeClasses33121.9Evidence33321.10The@implicitNotFoundAnnotation33421.11CanBuildFromDemystified334Exercises336Index338
2023/5/10 20:11:09 14.89MB scala 快学scala 第二版
1
本资源搜罗:1.最新版的WinIO(v3.0).WinIo32.dll,WinIo32.sys,WinIO64.dll,WinIO64.sys.2.DumpPort.exe以及DumpPhys.exe实例.3.C#挪用源码.4.VB6挪用源码.5.Help文件,齐全函数教学.此版反对于64位体系,但再也不反对于Win9x.对于WinIOv3.0:TheWinIolibraryallows32-bitand64-bitWindowsapplicationstodirectlyaccessI/Oportsandphysicalmemory.Version3.0offersthefollowingfeatures:Supports32-bitand64-bitplatforms(Itaniumexcluded).WinIocannowbeusedbymultipleapplicationsconcurrently.NewC#samples.Bugfixesinthisversion:Fixedabugthatpreventedaccessingphysicalmemoryabove2GB.FixedabugthatledtotheWinIodrivergettinguninstalledwhencallingShutdownWinIoifthedriverwassettoloadduringbootwithInstallWinIoDriver.Note:SupportforWindows9x/MEhasbeenremoved.Ifyouneedtosupporttheseoperatingsystems,pleaseuseWinIov2.
2023/5/2 14:39:31 187KB WinIO VB6 C# DumpPort
1
共 18 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡