展开

关键词

为复杂学习环境而生:Open edx和openstack

事实证明,两个“open”(open edX和openstack)的组合是提供这种功能的最佳选择。 Open edXOpen edX是一个学习管理平台,于2012年在哈佛大学和麻省理工学院启动,随后在斯坦福大学进行了合作。 今天,非营利组织edX Inc.推动了Open edX的大部分开发工作,并继续主办edx.org学习网站。整个平台是开源软件,欢迎社区的贡献。 与此同时,全世界估计还有1800万学习者使用基于edX的独立开放平台。Open edX平台的核心是它的学习管理系统(LMS),它的创建者称为LMS,这是一个非常复杂的Django应用程序。 studio.png XBlocks:一个灵活的、可扩展的插件系统XBlocks是Open edX的插件系统,允许作者显著扩展Open edX的功能。

40600

Open edX 学习、开发、运维相关链接整理

Mysql) Ansible-playbook Gem项目介绍:http:code.edx.orghttp:iblstudios.comwp-contentuploads201408IBL-Open-edX-Ebook :people.csail.mit.eduichuangedx谁在用Open edX:https:github.comedxedx-platformwikiSites-powered-by-Open-edX 谁能提供Open edX技术服务:https:github.comedxedx-platformwikiList-of-Open-edX-service-providers作为课程制作者:http:edx.readthedocs.orgprojectsedx-partner-course-staffenlatest forumopenedx-opsopenedx-translation: edx翻译项目https:groups.google.comforum#! forumopenedx-analyticsedx-code: edx 功能、代码相关https:groups.google.comforum#!forumedx-code

1.1K50
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年38元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何白嫖Coursera和edX中高质量的课程?

    提前说明,我没有收到Coursera和Edx这两个网站的一分钱,如有巧合,请给我补上广告费(大雾)。下面进入正题,首先简单介绍一下这两个网站。 科普时间Coursera和edX是两家美国的在线教育公司,其中Coursera是吴恩达(Andrew NG)创办的,而edX是MIT和哈佛创办的。 edX同样和国内一些高校有合作,但是本土化做得差一些。和Coursera相比,edX由于最早出身高校,更加偏官方一些。 比如MIT和哈佛的公开课就只有edX上才有,这两个高校开设的课程质量非常高,也是edX当中的王牌课程。这两家网站并不是完全免费的,但也不是完全收费的。 edX本土化差很多,很多课程没有中文字幕,但是edX旁听更加容易,而且有些资源是独占的,比如刚才提到的MIT和哈佛的课程,所以有时候也不能放过。

    98520

    资源 | 微软开放内部AI系列培训课程:10大技能,edX可免费注册

    课程列表这个系列课程目前已经被放上了edX,注册即可免费收听。每门课程为期三个月,从一个季度开始,分别为 1月 - 3月,4 - 6月,7 - 9月和10 - 12月。 edX链接:https:www.edx.orgmicrosoft-professional-program-artificial-intelligence *课程可以在任何课程中以任何顺序进行。 在edX首页,课程的培养计划如下:本课程是微软数据科学专业计划证书和微软人工智能专业计划的一部分。 数据科学人才的需求正在迅速增长。

    28120

    《coredump问题原理探究》Linux x86版5.8节C风格数据结构内存布局之结构体数组结构体coredump

    : mov 0x8(%eax),%ecx 0x0804856d : mov -0x10(%ebp),%edx 0x08048570 : mov %edx,%eax 0x08048572 : add % (%ebp),%edx 0x08048586 : mov %edx,%eax 0x08048588 : add %eax,%eax 0x0804858a : add %edx,%eax 0x0804858c : mov -0x10(%ebp),%edx 0x08048570 : mov %edx,%eax 0x08048572 : add %eax,%eax 0x08048574 : add %edx,% 先分析一下前面相同的指令: 0x0804856d : mov -0x10(%ebp),%edx ;把cnt(ebp-0x10)的内容放入edx 0x08048570 : mov %edx,%eax ;eax = edx 0x08048572 : add %eax,%eax ;eax *= 2 0x08048574 : add %edx,%eax ;eax += edx = 3*edx 0x08048576

    18610

    linux、memory、memcmp 几种实现和性能对比

    movzwl (%rdi, %rsi), %edx subq $2, %r10 je L(fin2_7) addq $2, %rdi cmpl %edx, %eax jnz L(fin2_7)L(s4b xorl %eax, %eax subl $0xffff, %edx jz L(finz) bsfl %edx, %ecx leaq (%rdi, %rcx), %rcx movzbl (%rcx), %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdiL(A64): movq %r11, %r10 andq $-64, %r10 cmpq %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdi movdqu (%rdi,%rsi), %xmm0 pcmpeqb (%rdi), % (%rdi), %xmm0 pmovmskb %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdi cmpq %rdi, %r10 jne

    3.5K00

    memcmp几种实现和性能对比

    movzwl (%rdi, %rsi), %edx subq $2, %r10 je L(fin2_7) addq $2, %rdi cmpl %edx, %eax jnz L(fin2_7)L(s4b xorl %eax, %eax subl $0xffff, %edx jz L(finz) bsfl %edx, %ecx leaq (%rdi, %rcx), %rcx movzbl (%rcx), %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdiL(A64): movq %r11, %r10 andq $-64, %r10 cmpq %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdi movdqu (%rdi,%rsi), %xmm0 pcmpeqb (%rdi), % (%rdi), %xmm0 pmovmskb %xmm0, %edx subl $0xffff, %edx jnz L(neq) addq $16, %rdi cmpq %rdi, %r10 jne

    1.2K80

    《coredump问题原理探究》Linux x86版6.3节有成员变量的类coredump例子

    0x0804865d : shl $0x2,%edx 0x08048660 : add %edx,%eax 0x08048662 : flds (%eax) 0x08048664 : fstpl 0x4 0x0804867f : shl $0x2,%edx 0x08048682 : add %edx,%eax 0x08048684 : mov (%eax),%eax 0x08048686 : mov 0x080486da : add $0x8,%edx 0x080486dd : mov (%edx),%ecx 0x080486df : mov 0xc(%ebp),%edx 0x080486e2 : add $0x4,%edx 0x080486e5 : mov (%edx),%edx 0x080486e7 : mov %eax,0x10(%esp) 0x080486eb : mov %ecx,0xc mov %edx,0x14(%eax) 0x080485e6 : mov 0x8(%ebp),%eax 0x080485e9 : mov 0x18(%ebp),%edx 0x080485ec : mov

    37210

    《coredump问题原理探究》Linux x86版6.4节虚函数

    0x08048597 : mov %edx,(%esp) 0x0804859a : call *%eax 0x0804859c : mov 0x1c(%esp),%eax 0x080485a0 : mov (%eax),%eax 0x080485a2 : mov (%eax),%eax 0x080485a4 : mov 0x1c(%esp),%edx 0x080485a8 : mov %edx,(%esp (%eax),%eax 0x080485a2 : mov (%eax),%eax 0x080485a4 : mov 0x1c(%esp),%edx 0x080485a8 : mov %edx,(%esp (%eax),%eax 0x080485a2 : mov (%eax),%eax 0x080485a4 : mov 0x1c(%esp),%edx 0x080485a8 : mov %edx,(%esp 0x080485bc : mov %edx,(%esp) 0x080485bf : call *%eax可见eax正好是放着print这个虚函数的指针。

    17510

    《coredump问题原理探究》Linux x86版5.7节C风格数据结构内存布局之结构体数组

    %ebp) ;i 0x080484dd : jmp 0x8048511 0x080484df : mov -0x4(%ebp),%eax 0x080484e2 : lea 0x0(,%eax,8),%edxedx = i*8 0x080484e9 : mov 0x8(%ebp),%eax ;eax = test 0x080484ec : add %eax,%edxedx = test 0x080484ee : mov -0x4(%ebp),%eax ;i 0x080484f1 : mov %ax,(%edx) ;test.idx = i 0x080484f4 : mov -0x4(%ebp),%eax ;i 0x080484f7 : lea 0x0(,%eax,8),%edxedx = i*8 0x080484fe : mov 0x8(%ebp),%eax ;eax = test 0x08048501 : add %eax,%edxedx = test 0x08048503 : mov -0x4(%ebp),%eax ;eax = i 0x08048506 : imul -0x4(%ebp),%

    18010

    菜鸟 学注册机编写之 “sha1”

    ,dword ptr ss: 2 0041772D 83C2 01 add edx,0x1 3 00417730 8995 70EFFFFF mov dword ptr ss:,edx 4 00417736 ,dword ptr ss: 34 0041799A 83C2 01 add edx,0x1 35 0041799D 8955 F8 mov dword ptr ss:,edx 36 004179A0 ,dword ptr ss: 57 004179E3 81E2 00F00300 and edx,0x3F000 58 004179E9 C1FA 0C sar edx,0xC 59 004179EC ,dword ptr ss: 63 004179FB 81E2 C00F0000 and edx,0xFC0 64 00417A01 C1FA 06 sar edx,0x6 65 00417A04 8B45 ,dword ptr ss: ; 转换成大写 4 004180DA 83C2 01 add edx,0x1 5 004180DD 8995 ACFEFFFF mov dword ptr ss:,edx

    33400

    C语言与汇编的嵌入式编程:main中模拟函数的调用(两数交换)

    ++++++n); _asm{ a=2 mov a,2 b=3 mov b,3 printf(str1,a,b); mov ecx,b push ecx mov eax,a push eax mov edx ,str1 push edx call printf add esp,12 swap(&a,&b); lea eax,b push eax lea ecx,a push ecx call swap add esp,8 printf(str1,a,b); mov ecx,b push ecx mov eax,a push eax mov edx,str1 push edx call printf add ,dword ptr mov eax,dword ptr mov ecx,dword ptr mov dword ptr ,ecx mov edx,dword ptr mov eax,dword ,str1 push edx call printf add esp,12 }}?

    29740

    PC逆向之代码还原技术,第六讲汇编中除法代码还原以及原理第一讲,除数是2的幂

    main(int argc, char* argv 获得被除数.text:00401043 cdq 符号扩展 eax,edx 被除数为正, edx = 0, 否则 edx = -1.text:00401044 and edx, 7 位与运算.被除数为正数,此条指令没用,因为edx = 0. 0 & 7还是0 被除数为负数 edx结果为7.text:00401047 add eax, edx (eax + edx )2^n edx = 0 则被除数是0 edx = -1 则被除数是负数. 被除数为负数 edx = -1 正数为0 sub eax,edx也是判断被除数是否为正负数.而进行的无分支优化. 除法原理: b > 0 也就是除数大于0 使用公式: ? 如果代入公式则是: 向下取整((eax + 2^n - edx) 2^n) 或者使用 向上取整((a - 2^n + edx) 2^n);b < 0 则有下面的公式 ?

    26210

    PhotoShop算法原理解析系列 - 风格化---》查找边缘。                  闲谈.Net类型之public的不public,fixed的不能fixed     当然这个还可

    ptr ,edx 00000339 add eax,edx 0000033b lea edx, 0000033e cmp edx,edi 00000340 jae 0000073C 00000346 add edx,6 00000359 cmp edx,edi 0000035b jae 0000073C 00000361 movzx edx,byte ptr 00000366 add edx,edx 00000368 sub eax,edx 0000036a lea edx, 0000036d cmp edx,edi 0000036f jae 0000073C 00000375 movzx edx ,byte ptr 00000323 add edx,edx 00000325 add eax,edx 00000327 movzx edx,byte ptr 0000032b mov dword ,edx 0000033a movzx edx,byte ptr 0000033f add edx,edx 00000341 sub eax,edx 00000343 movzx edx,byte ptr

    46790

    《coredump问题原理探究》Linux x86版7.2节vector coredump例子

    (%ebp),%eax---Type to continue, or q to quit---由 0x08048846 : mov -0x2c(%ebp),%edx 0x08048849 : mov % edx,0x14(%esp) 0x0804884d : mov -0x28(%ebp),%edx 0x08048850 : mov %edx,0x10(%esp) 0x08048854 : mov -0x24 (%ebp),%edx 0x08048857 : mov %edx,0xc(%esp) 0x0804885b : mov -0x20(%ebp),%edx---Type to continue, or q to quit--- 0x0804885e : mov %edx,0x8(%esp) 0x08048862 : mov -0x1c(%ebp),%edx 0x08048865 : mov %edx, ,(%esp) 0x080487d5 : call 0x8048958 0x080487da : lea -0x2c(%ebp),%eax 0x080487dd : lea -0x5c(%ebp),%edx

    28110

    《coredump问题原理探究》Linux x86版7.7节 set对象

    0x08048652 : movl $0x523,-0x34(%ebp) 0x08048659 : lea -0x3c(%ebp),%eax 0x0804865c : lea -0x34(%ebp),%edx 0x0804865f : mov %edx,0x8(%esp) 0x08048663 : lea -0x54(%ebp),%edx 0x08048666 : mov %edx,0x4(%esp) 0x0804866a 0x0804867c : lea -0x30(%ebp),%eax---Type to continue, or q to quit--- 0x0804867f : lea -0x28(%ebp),%edx 0x08048682 : mov %edx,0x8(%esp) 0x08048686 : lea -0x54(%ebp),%edx 0x08048689 : mov %edx,0x4(%esp) 0x0804868d 0x080486a5 : mov %edx,0x8(%esp) 0x080486a9 : lea -0x54(%ebp),%edx 0x080486ac : mov %edx,0x4(%esp) 0x080486b0

    23010

    strlen的另一种实现,可以作为ShellCode

    %s.text:00401083 movq , xmm0.text:00401088 call scanf_s .text:00401090 add esp, 8.text:00401093 lea edx . inc eax 地址递增5. test cl,cl 判断单个字符是否为0也就是结尾.不是就上跳,上跳是循环.所以地址不断递增6. sub eax,edx 循环过后.eax = 字符串的高地址. 因为strlen的特点就是遇到0结尾推出.所以汇编 sub eax,edx eax = 字符串0结尾的地址edx = 首地址字符串+1的地址两者相减就是字符串长度. 所以这就是为什么 edx = 字符串首地址 + 1了.其实也可以换成下方汇编 如下:lea eax,字符串首地址lea edx,字符串首地址 labale: mov cl, 取出单个字符 inc eax 1 strlen的特殊性.所以eax - 1 (也就是去掉0) 就是字符串的长度上面edx是进行优化了.

    17910

    《coredump问题原理探究》Linux x86版4.3节函数的逆向之条件结构

    0x0804857f : add %edx,%eax 0x08048581 : jmp 0x804859e 0x08048583 : cmpl $0x0,0x8(%ebp) 0x08048587 : jle 0x8048597 0x08048589 : mov 0x10(%ebp),%eax 0x0804858c : mov 0xc(%ebp),%edx 0x0804858f : mov %edx, 那么, 0x08048579 : mov 0x10(%ebp),%eax 0x0804857c : mov 0xc(%ebp),%edx 0x0804857f : add %edx,%eax应该对应a等于 那么, 0x08048589 : mov 0x10(%ebp),%eax 0x0804858c : mov 0xc(%ebp),%edx 0x0804858f : mov %edx,%ecx 0x08048591 mov 0xc(%ebp),%edx 0x080485c1 : mov %edx,%ecx 0x080485c3 : sub %eax,%ecx 0x080485c5 : mov %ecx,%eax 0x080485c7

    22420

    《coredump问题原理探究》Linux x86版4.5节函数的逆向之coredump例子

    0x08048521 : mov 0xc(%ebp),%eax 0x08048524 : add %edx,%eax 0x08048526 : mov (%eax),%eax 0x08048528 : eax,%eax 0x08048544 : jne 0x80485a5 0x08048546 : mov 0x1c(%esp),%eax 0x0804854a : lea 0x0(,%eax,4),%edx 0x08048551 : mov 0xc(%ebp),%eax 0x08048554 : add %edx,%eax 0x08048556 : mov (%eax),%eax 0x08048558 : 0x0804857e : mov 0xc(%ebp),%eax 0x08048581 : add %edx,%eax 0x08048583 : mov (%eax),%eax 0x08048585 : 0x08048551 : mov 0xc(%ebp),%eax 0x08048554 : add %edx,%eax 0x08048556 : mov (%eax),%eax 0x08048558 :

    16320

    关于分段免杀执行的思考

    找出下面这段程序机器码放在第一段shellcode之前 __asm{ xor edx,edx mov bh,51h bh存储key decode: mov bl,byte ptr ds: xor bl, bh mov byte ptr ds:,bl inc edx cmp bl,90h je execute jmp decode execute: add ecx,edx ecx加上解码的数目 ret } eax 将eax压入栈中(因为我们执行的代码中利用eax进行,eax值不能变) mov eax,edx 将decode首地址传给eax xor edx,edx mov bh,47h 第二段key,各段shellcode ,ecx add ecx,25 ecx存储第一个shellcode首地址,从xor edx,edx到ret,这段的机器码 push ecx 第一个shellcode压入站首地址 sub ecx,21 解码 decode首地址,21第一个shellcode到解码的机器码数 push ecx 压入栈 add ecx,21 call edx 解码 pop edx 解码首地址 pop ebx 第一个shellccode

    21630

    扫码关注云+社区

    领取腾讯云代金券